Linux has a massive problem with the whole way drivers are embedded in to the kernel. Sure, in theory you can have external modules but anyone who uses ZFS should know this is not the same as the way windows does it. I consider ZFS to be stable enough for production use as a driver, but the fact it is an external module means it is not safe to use on a production server that you expect to actually update from time to time.
I have a surface pro. A lot of the hardware is not supported in the mainline Linux kernel. This means I need to install a Linux system with "just enough hardware kind of working to be able to get through the install process" (on most distros - some have a kernel that can not manage the install process without locking up) then post-install follow complicated instructions to replace the kernel with a forked version that does have the right drivers.
What does this mean in practice? It means after following distro-version specific instructions which might not be available for the new version, I also need to override the OS update mechanisms so it doesn't try to "update" to the "official" kernel release, which totally breaks my system.
There is working open source code for the hardware, but for various reasons they don't want every single possible driver in their codebase where they have to maintain it. Fine, then I guess we should go the module route?
If you run ZFS on Linux then you know this is shipped as a module that can be compiled against your existing kernel to be loaded in a similar way to windows... Except there is no binary compatibility. So every kernel update, you have to recompile any such modules locally to build a new version that works with the newer kernel.
There is also no source code compatibility between kernel versions, because why would there be? The only reason a module is likely to work on a newer kernel is because they don't change every line of code with every release, so most of the time you will be "lucky" that the relevant code hasn't been changed and therefore the module still builds.
Even with the work distro maintainers have put in to the automatic rebuild system, sometimes a new kernel will come out where even a popular external module like ZFS will simply refuse to build until the module source code is updated to a new version that works with the newer kernel. Not likely for less popular modules. And of course the new module is no longer compatible with the older kernel unless they put #ifdef's in and maintain the code for every kernel version they want to support.
Compare to windows land: You have a binary blob that supports windows 7, that binary will work on any windows 7 system and will continue to work as updates are released. It will almost certainly still work perfectly fine on windows 8, and 10, and 11. Most windows drivers will work just fine on any newer OS version with the only "major breakages" being 1. Pre-64bit drivers will have an issue on a modern 64bit OS. And 2. Drivers written before code signing became mandatory might be unsigned and therefore are impractical to run on a modern OS. But the basic driver is compatible and can just be installed by telling the OS "hey, use this file" with no compilers involved and a very small chance of breaking anything.