There’s generic drivers, for example any USB keyboard or mouse can use a generic driver. That’s usually developed by the OS developer, so for example Microsoft wrote a driver for this, there’s a driver in the Linux kernel, etc.
The other type are drivers for specific hardware. On Linux, sometimes this is written by contributors, while other times the manufacturer itself writes the drivers (eg Intel wrote a lot of the kernel drivers for their hardware like CPUs, network cards, etc). On Windows, these are almost always written by the device manufacturers.
The generic drivers are usually very solid but have limited features since they have to work for a large range of devices. It’s the manufacturer-written ones that tend to be buggy.
There’s two types of drivers shipped with OSes.
There’s generic drivers, for example any USB keyboard or mouse can use a generic driver. That’s usually developed by the OS developer, so for example Microsoft wrote a driver for this, there’s a driver in the Linux kernel, etc.
The other type are drivers for specific hardware. On Linux, sometimes this is written by contributors, while other times the manufacturer itself writes the drivers (eg Intel wrote a lot of the kernel drivers for their hardware like CPUs, network cards, etc). On Windows, these are almost always written by the device manufacturers.
The generic drivers are usually very solid but have limited features since they have to work for a large range of devices. It’s the manufacturer-written ones that tend to be buggy.