For fun, for profit (example is if your distro didn't backport the nice new wireless and dual core support in 2.6.17) for buggyness (you want to use reiserFS 4). There are a lot of good and not so good reasons to compile your own kernel. I compile my own kernel because genkernel sucks (and you only have two options with gentoo, genkernel and your own kernel).
Tipicaly I just setup all my drivers, processor type, and other features I've learned I needed over the years. If I am unsure I go with the recomended default as its trivial and really fast to recompile your kernel later. Its not horribly complicated to do and you really can't screw anything up (as long as you keep your old kernel in grub for backup). When a new kernel comes along I just copy the .config over and run make oldconfig. Answer the few questions that pop up and I'm finished. After my system is setup for the first time I always use gconfig over menuconfig. And I always install using make && make modules modules_install install. That way it is easy to debug any problems and it puts everything in /boot for me with nice symlinks so that in grub I have vmlinuz symlinked to the current kernel and vmlinuz.old symlinked for the previous kernel.
The one thing I like about this method is how simple everything is. Normally it is just as trival to build and install a new kernel as it is to just do apt-get install a new kernel. On distro's that supply their own kernels I usually dont compile my own kernel. My exception was with ubuntu 6.06. I compiled my own kernel because there was no k8 32bit kernel and I find ubuntu 64bit very lacking compared to gentoo (although its getting much much better). I dont know if the k8 kernel makes a difference, but it was trivial to and in the least saved me a meg of ram LOL.
Size wise I wouldn't worry too much about your kernel. Just compile suspect things as modules and they wont be loaded into memory. Most options dont increase kernel size that much anyways. Hell my entire boot partition is only 38megs.