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.