I am currently working on a fairly large application that is spread across two locations, separated by about six hours time difference. This has led to a lot of issues, particularly with communications. People in one location will change something and not tell the others. Someone will check-in some code that breaks things and then one of the teams has to wait until the other team gets in to fix it. The business analysis is being done in the location that is not the same as the users. And the list goes on.
It seems like the same sort of problems happen on a lot of projects.