One upside of kernel modules: you can build a very small kernel without having a ton of features. If you actually need the xbox one controller support - you can enable the module. Really useful on small footprint devices.
The only downside is that the kernel doesn't have a stable API, so the open source code of kernel modules becomes gradually more useless if not actively maintained as it won't compile against the kernel headers anymore requiring more and more work to fix.