Fragmentation is a symptom of a problem, which is carrier and OEM indifference. What a given dev wants to create may be constrained by hardware (eg- a tegra chip set), software (needing a particular API), or as mentioned before, lack of various hardware. When OEMs aren't willing to invest in their customers or get charged by carriers when they do (knowing you'll get timely software updates can be a reason to stick with an OEM come upgrade time), leaves users on legacy software. This is a large part as to why the fattest slice on the Android version pie chart is consistently one or two versions behind Google.
Please hit the "thanks" or "like" button if I've helped.