Note, another factor is that it's easier to integrate an in-kernel server with the exported filesystems.
File locking, NFSv4 file delegations, NFSv4 change attributes, and lookup of files by filehandle are all areas where we've traditionally depended on in-kernel interfaces between knfsd and filesystems.
Over time we've added APIs which expose that functionality to userspace (see for example open_by_handle_at(2)), and we may some day get to the point where userspace has access to all the same filesystem functionality as knfsd, but we're not there yet.
There actually is an active userspace NFS server project (Ganesha). My impression is that it's currently better suited for exporting filesystems (typically complicated distributed systems) that themselves run mainly in userspace.