Can a linux 2.6 serial console driver that registers itself using the console_initcall() macro be developed as a loadable module or must it be compiled in-kernel?
As described in the kernel documentation there needs to be a system console driver which is called during the initialization phase.
So if you want default system console support for the serial drivers, you need to have them in-kernel. See drivers/tty/serial/Kconfig for the existing drivers.
This discussion might be also interesting for you.