system
Given the following post, respond as if you're commenting on Reddit:
human
Why is it possible to install a wide variety of generic operating systems on just about any computer, but a custom ROM has to be developed for every smartphone?

With the computers you can pick nearly any machine and just install your favorite OS on it, as long as it has enough resources for it. You may have some driver problems, but still it is possible to switch between different flavors of Windows and Linux. 

With the  phones it takes entire communities of developers adopting the ROM for every specific device. And you are usually stuck with the operating system you originally had on the device.

Why can't phones be more like computers?
gpt
You actually answered your own question. It is primarily drivers. On PC manufacturers have agreed upon standards and protocols that allow most hardware to operate similarly without the need for complex drivers. The best example of this is monitors and flash drives and the worst example is graphics cards, although even those work at a basic level with generic drivers most of the time.

This is especially a problem with radios. Each carrier uses different frequencies and each phone can use a different chip. There is no incentive for manufacturers to supply drivers to consumers, so they have to be reverse engineered or coded from scratch, frequently on a per phone basis.

Couple that with the relatively young age of the growing smartphone market and you have your explanation.

EDIT:

I forgot to mention that many phones also come with locked bootloaders, which can prevent running custom software on a device. A bootloader's primary purpose is to load and then hand off control of the hardware to the Operating System. This has become less of a problem recently, as many manufacturers are starting to offer methods to unlock bootloaders themselves in an effort to encourage developers to buy their phones.