The article clearly states it is a feature for consumers, not developers, a feature that is largely responsible for the success of Android as a platform, since consumers have a choice to pick what kind of device they like.
It is relatively harder to develop for Android than for iOS, but it is nowhere near being as big of an issue as some are trying to portray it. Of course if you are, for example, a one man band developer, it will be very difficult to provide high quality native experiences on two different platforms, but that's a limitation of time and experience, not of inherent impossibility of any platform.
It's not a limitation of experience. Regardless of how experienced you are, it will still cost you more.
Higher development costs for apps is a problem for consumers as well as developers.
When developers complain about fragmentation they aren't complaining about the diversity of form factors and device capabilities.
They are complaining that these aren't cleanly abstracted away by the operating system, and that the delivery of updates is a mess.
OS Support for diverse hardware is a feature. Fragmentation is not.
Apple sidesteps this problem by not supporting diverse hardware.
Android could potentially solve the problem with better abstraction and a better software update process, but hasn't yet, so the costs are passed on to developers and consumers.
I agree in regards to a better software update process. I don't know how much the abstraction could be improved, since the diversity makes some things impossible to abstract. I should clarify I'm talking from a perspective of developing apps, not games (simple apps at that, as I started learning Android slightly more than half a year ago), so I haven't encountered the really difficult development issues that games developers stumble upon so often. What I have learned so far, however, has helped me plan out each project better. What in the beginning seemed an issue that will double the amount of work (and maybe even was so on the first project), ended up being solved with maybe 5 to 10% more effort and thought on the second project.
Yes, either way you look at it, it is more work, but with experience it has become more or less marginal for me. Although it could also be that once you accept something as unchangeable fact, you adapt expectations and it no longer represents a source of frustration :). Who knows!
Edit: Reading my post, I realised how ridiculous my claim of experience is based on working on Android for less than a year, especially without any other previous programming experience, but I hope it's still clear what I mean.
In the context of the article, it's an end-user feature. Just as having the ability to use anything from a 10" netbook screen to a 6-monitor array is a major feature of PCs that could not be equaled if there were only one or two PC models on the market. Though surely it would be cheaper and easier to develop PC apps if there were only one or two models.
Considering I'm typing this on my phone's physical keyboard, I'm a big fan of the fact that hardware diversity allows me to find a phone that fits the way I want to work.
It might not be a fatal problem, but it does raise the barrier to entry, and it does reduce profitability for apps that are more marginal.