Your answer, while well intentioned, is way over simplified. I am in a position that I am able to talk with the person or persons involved in driver development in many companies. The general consensus is that developing a driver or drivers that offer the same usability that the ones developed for Microsoft is just too expensive and time consuming.
I recently had a conversation with a developer from Brother USA. The individual uses Linux on his person PC at home. He explained that one of the major stumbling blocks were the many flavors of *nix that are available. Developing for all of them, especially the niche market ones like FreeBSD is not feasible. With Microsoft, a driver developed for WinXP might very well still work on Win-8.1, whereas in the *nix world, a driver developed for one flavor of Linux is usually useless on another flavor. If the FOSS world came together and developed one uniform driver model that employed a uniform installation routine, etcetera, then the costs of developing drivers for *nix would no longer be the problem that the presently are.
Not mentioned here, but important to remember is that Microsoft develops drivers for many devices on their own. They are usually "universal" drivers, but at least they offer some limited use of the device it was developed for. In some case, even more than the one written by the device's developer. Microsoft also offers "in-house" support for authors attempting to write drivers for its operating system.
It is also worth noting, that in many instances, the operating system does not offer the support that the device needs to operate to begin with. In the FreeBSD word, it took nearly 10 years for them to get support for "n" protocol drivers, and it is still woefully incomplete.