Think of modules this way....
A kernel might be compiled with all this stuff in, but now instead of a kernel that is 1.4M (floppy sized)you might end up with a kernel 1.9M or larger...meaning having to use special floppy formats, etc..
This also means that every time the kernel loads...it takes up a larger amount of memory; is longer to boot...and if you don't need that portion (module)...it is still loaded...eating up resources.
The solution to all this is the ability to load modules as they are needed. Also, even though I haven't searched how how...modules can be un
loaded...whereas if they were in the kernel...it's always there.
Modules allow a wide variety without bloating the kernel and increasing boot time.
The downside is the loading & unloading of modules...but in practice this really is no problem.
And, you need to tell linux which modules to load...and this is done different ways in different distros.
In general I use modules every time I can...except thinks like the type of filesystem that the kernel looks for at boot.
I am sure that a lot more could be said, but in a nutshell...here it is.
I hope this helps.