The different companies put their own software on each phone. The phone itself, and the Android OS, are identical, but in reality you aren't really using the Android OS but rather your carrier's version, with their restrictions.
Also the different networks have different programming "languages."
There is a physical difference. I'm currently looking for a case for my S2 from straight talk (AT&T style). The t-mobile and sprint cases look the same but the AT&T model has the volume and power buttons more towards the middle instead of near the top. Also, the rear camera and flash for AT&T is a wider setup as opposed to the tall and narrow setup of the others.