Ну во первых есть хитрые драйвера NDIS которые обладают совместимостью.... точнее они настолько не глубоко завязаны в операционную систему, что являются переносимыми.
А вообще - все дело в оптимизации, в поиске "лучшего пути" и т.п.
Поэтому все программы (а драйвера являются программами) или вообще не совместимы или очень ограниченно совместимы с различными операционными системами.
В каждой операционной системе свои правила, которыми должна руководствоваться программа (в т.ч. и драйвер), чтобы работать в этой операционной системе. Обычное название этих правил API или ABI.
UPD:
В Linux и OS X, как то все по другому. В большинстве своем устройства умеют из коробки. Я читал, что драйвера "вшиты в ядро", но не могу понять, что это значит?
Т.н. монолитная архитектура vs микроядерная.
Есть еще и хитрые комбинации - прочитайте про ядро Mach например.
Или про то как устроены драйвера в FreeBSD - одни и те же драйвера в FreeBSD могут как встраиваться в ядро FreeBSD (как в Linux), так и существовать как отдельные модуля (как в Windows).
UPD:
Разница в архитектуре операционных систем и, следовательно, во внутреннем устройстве драйверов настолько велика, что даже имея доступ к исходным текстам, перенести драйвера из Linux в FreeBSD, к примеру - это много работы, много усилий. Скажем драйвера от последнего GPU i3/i5/i5 переносили пару-тройку лет.