I can spend my time as a developer figuring out if the screen is high or medium res, multitouch is there or not, if the phone has a hardware keyboard, how much RAM the phone has, if there is a SD card present, or check to see if the phone is rooted so the app doesn't run on user-compromised hardware. I can then try to QA against a large amount of combinations of hardware.
Or I can write on a platform that is known good, will have 4 models than 4000, and where I can work on making an app that is top quality as opposed to just making the app not force close when it gets run. My QA time is spent on just a few phones which will be the same, as opposed to uncountable models which may make my app force close for no real reason. Instead of spending time QAing against random models, I can spend time advancing the dev cycle of my app so users get more features.
Don't forget JVMs. Java is already a language that has been effectively abandoned in mainstream computing with a JVM du jour and no guarantee of portability. Code that runs on Windows JVMs might not run on Macs. And it is the same thing on Android. The JVM on one handset may not be 100% compatible with another handset so my code force closes if I don't test thoroughly. Compare this to Objective-C which is strongly supported by a wide community, and code compiled under it will run the same regardless of model device.
Follow the money. iPhone owners buy apps. Android users talk about them. There is just no reason for a developer who needs to earn money to write for Android when they have a guaranteed market with the iPhone. At least Apple's iAd guarantees that even free apps will make some revenue, and Google has no standardized ad platform.