This isn't really about QUIC so much as it is about developer experience. Authentication, confidentiality, integrity, congestion control, reliable+ordered streams etc. are all fundamental features of the protocol, so of course it's a bit beefy. Those LoC have to be written
somewhere - whether in the kernel or in userspace makes little difference, semantically. The reason that QUIC is a library is because it's still relatively new. That said, support for creation of QUIC sockets in the Linux kernel is underway (
https://lwn.net/Articles/1029851/).