While there is a difference in how Canonical and the Debian Project are
handling this: Canonical, as we all know, has it pre-compiled while the
Debian Project provides source code that is compiled when someone installs
the package. This difference doesn't actually matter.
I'll call what the Debian Project is doing the "We'll Let The Users Do It"
method.
Let's put ZFS aside for a moment and remember some free software history.
Think back to the days of Steve Jobs and Objective C. Another
GPL-incompatible license was in use and the proposal was the also "We'll Let
The Users Do It." That wasn't accepted as a way around the requirements to
put it under a GPL-compatible license back then, and nothing has changed with
the GPL that makes such an answer to GPL incompatibility acceptable now.
The more important question is whether (and how) the software is intended to
interface with each other. As I explained in the other thread, the fact that
you need a bunch of files from the kernel to satisfy the #include directives
in order to compile it at all, along with the fact that it uses internal
kernel interfaces and not the system call interface all point to it being a
part of/a derivative of the kernel and so subject to the GPL's requirements.