1) You are restricted as to which parts of the SDK you can use.
2) Your app may be rejected for any reason, no reason, or whatever reason. The reason may or may not be explained, and may or may not make sense.
3) Even if it isn't rejected, it will still take weeks or months to get your app into the hands of customers.
None of this applies to Apple apps, of course. Therefore, independent developers are 2nd class citizens of the iPhone.
As an example: Twidroid (and most other Android apps) can run in the background, and use data in the background without a custom push server. Apple's Mail app, on the other hand, isn't buildable (for the iPhone) with the public APIs. You'd need to run in the background for that, which isn't available.
Don't judge the API based on the quality of apps you're seeing - I've seen some well-polished Android apps, and some legendarily horrible iPhone ones.
See here for a comparison of the Droid and the iPhone 3GS (http://www.networkworld.com/news/2009/101909-droid-vs-iphone...)
Neither Android nor the Blackberry has a unified product. When I design for the iPhone I know the exact product dimensions, I know exactly how the user will be interacting with my program, and I know it will be the exact same a year or two from now. I can make one app that any iPhone owner can use and it will be used exactly as I want it used. With Android and Blackberry, that's not the case.
all apps are 1st class apps
Pardon my poor French, but what the fuck does that mean? I've seen Android apps and iPhone apps, and the Android apps are uglier and less elegant.