- If you statically link everything you need you can then simply use "makeoptions NO_MODULES=yes" so you're not building unnecessary modules.
This can also be accomplished with MODULES_OVERRIDE and/or WITHOUT_MODULES.
- The ability to load modules at runtime is not always a good thing. The module could be a rootkit for instance.
SECURELEVEL also mitigates this.
As with these two, probably any benefit can also (and some would argue, should) be accomplished in another way.
Personally I like my kernel to be like a firewall ruleset: I start by excluding everything, then add what I need and prevent additions at runtime.
Unless the kernel is recompiled, I know exactly what is supported. So if I have not compiled in some functionality, like SCTP or NFS, I can just ignore advisories that only affect those parts. Adding functionality requires me to manually add it.
With modules there are numerous ways how a module could get loaded automatically: by simply using some functionality once, by installing a port, by updating (default changed, new functionality added), etc.
In all of those cases I think it's a benefit to be forced to manually add the functionality if, and only if, it's actually needed.