Any updates are 100% OEM responsibility unless it's a nexus device. It's not googles fault, which I'll explain in more detail in a sec, it's the manufacturers and if were being adults, the consumers. Unless the phone was advertised with guaranteed updates as a selling point like a nexus, and even though i personally dislike the current practices, the consumer is partly to blame for expecting something they werent promised. I believe the morally correct thing for OEMs is to provide at least 1 update for a major revision.
That said, if all OEMs used the exact same chip as a nexus device, they'd be updated quicker. The way Android source works is each revision is designed completely around a specific chip, whatever is being features on the nexus device. The OEMs are responsible for then backporting the software update to their chip. Google does the exact same thing for older nexus devices. Once source launches they back port to the previous years chip, then again, etc etc. It's unrealistic to expect google to backport for the 100's of cpu/gpu configs that OEMs selected knowing they would be responsible for backporting. Doing anything to the source code such as limiting access goes against open source principals.
Despite Google not being at fault, they are guilty of not aggressively trying to fix the situation. Why not create a program for OEMs which if they agree that all software functions and features created by an OEM are open source to be merged into AOSP (reduces need to port, adds feature for ALL users not just one device). UI's should be independent of extreme framework modification (reducing their complexity to upgrade). And in turn Google works directly with those OEMs to ensure a timely turnaround of backporting for their chips.
Maybe no OEM would be on board, maybe all. But it's time to think outside of the box to fix it, without compromising OEMs interest in the OS.