The size of vmlinuz is limited (at least on the x86 platform) is because
when the kernel is being loaded into memory the processor is in real
mode, and only has conventional memort to work with (<640K). The real
reason behind this is that the bootloader needs the bios to load the
kernel into memory, which only works in real mode. bzImage tries to get
around that by having the boot loader load the kernel into extended
memory one chunk at a time (ie load chunk using bios, switch to prot.
mode, copy to ext mem, switch back to real mode, etc.) thereby
eliminating the size restriction. Note also that the size restriction
is also one of the reasons the kernel image is compressed with gzip.
AFAIK, x86 is the only architecture which has such a size restriction on
the kernel.
--Brian Gerst