Having a number of different operating systems that claim to be "Android" but are actually incompatible with each other is a huge problem. Users expect the different handsets to have the same functionality, and developers don't want to (and cannot) write infinite variations of their applications to work on the different phones. Fragmentation doesn't lead to one handset maker's version of android winning over another, it leads to android losing overall, as the costs of android development increases and the quality of the user experience decreases. Feels like the browser wars a bit.
That would be an argument if it weren't for the fact that J2ME was a complete failure in compatibility and Android is, in fact, the best example of write-once-run-everywhere that Java has ever seen.
Yeah, it makes life more difficult for developers. Just like the variety of linux distributions. And yet I don't hear anyone here whining about how we need to all standardize on Oracle Linux.
You don't hear that whining much anymore because of a few reasons.
1) many people who valued standardization of experience moved to other platforms
2) on desktop systems, you can fairly straightforwardly (though not always easily) compile from sources to get an executable binary compatible with you hardware. With mobile/tablets, that's rarely the case (i'd say never, but I don't know about edge case devices out there which may support/encourage it).
I think it's more accurate to say that the linux community engineered around it. Think about the package distribution systems that have evolved: apt, yum, slackpkg, etc. Installing software on a linux distro is WAY easier than than installing software on my Mac. Compare running aptitude install MySQL to going to the MySQL website, downloading a dmg, and running an installer.
This kind of package management would never have evolved under the One True Dogma of Sun or Oracle. Windows still doesn't have it. Apple has finally put an App Store on OSX, but of course with their usual dictatorial flair.
Java is a dying community. This is 100% Sun's fault. The only flourishing parts of the Java ecosystem (Android and App Engine) are flourishing because they dared to speak heresy.
If the price of iPhones and android based phones were equivalent, then yes, android phones lose overall to iPhones.
However, anecdotally and from personal observation (small data size), those who cannot afford iPhones tend to go with androids due to price and availability than go with older generation iPhones.
Do Users really expect Different handsets to have the Same functionality? Or is slightly different ok, since they are slightly different handsets?