I'm always interested in a good discussion. I'll try to hit your points in order:
1) It's good to have software specifically developed for the hardware when you're dealing with mobile devices because software has to be as efficient as possible, and it's almost always the case that when software has to bend to meet varying hardware specifications, performance, reliability, usability, or efficiency is almost always sacrificed in some way or another. This is especially bad when you're dealing with devices (like mobile devices) where the UI is critical, the efficiency, reliability and speed must be maximized, and the battery-life preserved (I realize the iPhone has poor battery life, but thankfully the software is highly efficient - refer to keynotes where they compared the iPhone strategy to the task manager on Windows Mobile, for instance).