One of the reasons for the iPhone to be such a well functioning and exceptionally usabale device lies in the fact that, completely in Apple fashion, both hardware and software are made by the same company. This way, the hardware engineers were completely aware of how the software would function, and the software engineers fully knew the ins and outs of the hardware platform, letting both achieve the maximum of what’s possible with the combination. This has worked very well in the past too: just have a look at the Mac to see how a complete package of tightly integrated hardware and software eleminates a lot of problems that occur in the generic PC field, where all software is supposed to work on all possible vendors, types, versions and variants of hardware components in countless possible combinations.
Next to the obvious usability advantages for end users, having a clear combined hardware/software platform is also a very nice thing for developers. Knowing exactly the device that your software will eventually run on gives a developer some of the same benefits: he or she can take maximum advantage of the platform, without taking the risk that something would not work, or work differently, on another type of device. You know the capabilities and limitations of the platform, and you do not have to guess what features might possible be there, or worse: what featurs might be missing and how to deal with such a situation.