Why are the user-level driver libraries tied to the version of the kernel module?

From nvidia docker document https://github.com/NVIDIA/nvidia-docker/wiki/NVIDIA-driver

[i]However, the user-level driver libraries are tied to the version of the kernel module and all Docker containers share the host OS kernel. The version of the kernel modules had to match exactly (major and minor version) the version of the user-level libraries. Trying to run a container with a mismatched environment would immediately yield an error inside the container:

$ nvidia-smi
Failed to initialize NVML: Driver/library version mismatch[/i]

I’m just curious why the user-level driver libraries are tied to the version of the kernel module? Is it possible to provide a backward compatible user-level driver libraries? If not, why?