That’s because GNU/Linux uses open, generic interfaces to communicate with (often fairly generic) hardware.
Android/Linux usually uses specialised closed black-box interfaces to communicate with hardware and those usually only work on one specific device or at best a small family of devices.
This model is dictated by the vendors of the hardware.