missing-root I dont entirely understand why Android is so specific, needing custom Kernels per device. Also I think "vendor code" is something not existent on PCs.
Traditionally, PC hardware has been fairly similar due to agreements among IBM, Intel, Microsoft, etc., on how to ship machines that work in a similar way.
Traditionally, phone hardware has not been similar to that extent. For size and power reasons, components that on a PC are pluggable cards or at least selectable chips are on a phone just parts of one giant chip called a "system on a chip" (SoC). SoCs are very different from each other.
In theory it would be possible to ship giant Linux kernels that could boot on any phone, but they would be giant, and would boot slowly.
Desktops and laptops and phones are indeed all computers, but phone hardware is different enough that it makes sense for phone software to be different too.