The number of Android devices, both good and craptacular, is pretty astonishing. Just like with their Macintosh line, Apple decided to take the in-house hardware+software route. Their software isn't going to be licensed out and will only run on their hardware. Google took the Microsoft approach by licensing their OS to work on many different configurations and devices from multiple manufacturers.
Personally, I am fed up with Android. I purchased a Droid X in 2010 when it was new and I have received only one OS update from Android 2.2 to 2.3. My device has the capabilities to run ICS and Jelly Bean but I hate how updates are released. They come from Google first, then the phone manufacturer has to add their stupid skin to them, and then the wireless companies decide whether or not they want to distribute the update. The whole thing is rather dumb. Imagine Microsoft releasing an important security update to Windows 7 only for it to have to go through the offices of Dell, HP, Sony, Toshiba, Acer, Asus, etc. for it to be applied to their 38947598374957983279579203475 different computers and then pushed out by your ISP.
That is what is happening with Android right now and that is why I absolutely hate it. Not only that but phones don't have the same update support lifespan. My 2 year old phone received an update early last year and that has been it. Motorola and Verizon have dropped support for my phone. Not only that but Android runs very slow even without all of the fancy GUI add-ons. I have to restart my phone 2-3 times a week just so it won't get bogged down when I actually need to do something (like make a phone call). Lastly, it now takes my phone ~15 seconds before it actually gives me the option to answer a phone call.
I'm not saying that iOS is perfect but Apple's closed world is at least updated regularly and I've never had my iPod touch or iPad take 15 seconds before the display turned on to let me answer a text. Google may have all the good intentions in the world but they are being held back by the hardware manufacturers and wireless companies. Things would be different if phones ran vanilla Android and the updates came straight from Google. However, the manufacturers have to put their stupid skins on Android (that only slow it down and serve no purpose) and decide if they are going to support the phones they made when half the time they release a phone and then come out with a new one 30 days later completely ignoring their one month old star.