As a point of comparison, Microsoft ships its OS across a variety of manufacturers and largely keeps it maintained across them (give or take some exceptions like enterprise environments & the like).
Even unlocked Android phones purchased independently of carriers have inconsistent lengths of support, so it doesn’t seem to be entirely a result of carriers, so…What happened here?
IMHO, you’re probably going to varying answers to this question. And I would argue that most of the barriers stem from Android’s greatest strength.
It’s open, it’s customizable, and hardware manufacturers have been given the room to set their own courses. Problem is, that extra wiggle room also creates more fragmentation.