@Conan_Kudo @tylersaunders ChromeOS has that "rule" and it's regularly flaunted for some subsystems for various, good, reasons.
As you well know, a SoC is a few orders of magnitude more complex than your normal server/desktop so the amount of drivers and kernel code to control it is almost double, and the code sharing from common IP blocks is much less than ideal. So trying to get all code upstream is a task that no SoC vendor seems willing to attempt until much later in the device cycle.
Yes, it would be cheaper and faster to do the work up front to get the code upstream, but SoC vendors have code to burn (actual quote from a QCOM manager to me) and no individual project wants to take the time-hit to save future products time on their upstream work (i.e. short term vs. long term incentives.)
The only real solution is if vendors put in their contracts "code must be upstream" before they buy the chips, that's what fixed it in the Enterprise server space decades ago. But right now, due to an almost monopoly in the SoC market, no one can afford to add that to contracts when making a new phone.
So you have it all here, technical complexity, short-term product deadlines, too much money to care about the problem, and monopolistic markets. Something for everyone to complain about and no single way to solve it.