The commands to the bus don't change.
The commands sent to the hardware don't change.
The internal logic won't change.
That leaves the specific hooks to the OS and the externally visible structures.
Nobody is insane enough to use globals directly and structures are subject to change without notice. So external stuff will already be isolated.
If the hardware is available for any two of HyperTransport, PCI Express 2.x, VME/VXI or one of the low-power busses used on mobile hand-warmers, err, smart devices, then the actual calls to the bus hardware will be compartmentalized or go through an OS-based abstraction layer.
So 95% of a well-written driver is OS-agnostic and the remaining 5% is already is isolated.
So either drivers are very badly written (which is a crime against sanity) or the hardware vendor could place the OS-dependent code in its own DLL at bugger-all cost to them. Since the OS-dependent code has nothing trade secret in it, they can publish the source for the shim at no risk. Since the shim isn't the driver, there's no implication of support for OS' they don't know or understand. It's not their problem what the shim is used for.
Everyone's happy. Well, happier. The companies don't get harassed, the Linux users get their drivers, Microsoft gets fewer complaints about badly-written drivers killing their software. It's not open, it's not supported, but it's good enough.