If there were alternatives (like on the desktop and for some parts of IoT) it would be more cost-efficient to upstream everything, but with the current situation it's fully up to Google.
When Google wanted them to move all their chip-specific code to modules (GKI), they had to do that. And if someone at Google randomly decided "hey, now you'll upstream this stuff", then guess what? They'd have to follow, it's how this monopoly works.
I don't love how much control Google is exerting over Android, and I don't love having to use their signed kernel. But I do prefer that vs. being stuck on an abandoned vendor kernel. If I have to accept low-quality proprietary kernel code, I'd rather keep it in small module-shaped boxes.
Companies like Qualcomm complain about this, but their historical practices are what drove Google to mandate it in the first place.