You don't actually need a custom kernel build for every device these days (and haven't for years). Within the same ISA (ARM32 or ARM64) you can run the exact same binary kernel on multiple devices provided you have a suitable device tree for each.
And that's not really much different in principle to APCI (which is really "DT on steroids"). The main difference is that with ACPI the device manufacturer ships the tables whereas with DT they have usually have to be provided by others.
PCs haven't standardised everything at the hardware level for years. The original PC had standard IO addresses but this only covers a few things like keyboard, display, serial ports. Modern PCs, especially laptops, have all sorts of "non standard" chips hanging off I2C busses.
There are 2 reasons it "just works" on PCs
1) ACPI tables descibe it (just like DT)
2) There are compatibility tests needed to get the Microsoft hardware certification to run Windows
But it goes beyond the kernel to the full OS distribution. All PCs have pretty much the same use cases and similar UI capabilities. Sure some may be more powerful etc but they're all pretty much the same idea. So on a PC it makes snese to pop in a USB key with a "generic" Linux distribution an install it. It probably doesn't make as much sense to want to install the exact same distribution on your PC, phone, TV and router. This means that, given the OS is going to be customised anyway there just isn't as much demand for a fully plug and play system.