It's been in my experience that you should build things into the kernel if you *know* you'll be using them all of the time. e.g.: I always compile ext3, various processor options, etc right into the kernel.
Modules are for things that you may use sometimes but not all of the time. Like various USB drivers, firewire, etc.
Now, the tricky part is some kernel options will not work when they are compiled. I don't know why...they just don't. Sound drivers in particular come to mind. I always compile these as modules.
Some SCSI drivers don't like to be compiled in. If you're running root on a scsi, you'll need to enable ramdisk images. You can find the tutural in
http://tldp.org/HOWTO/SCSI-2.4-HOWTO/
Hope that helps.