udev is the mechanism by which device entries are located and the proper drivers are selected for them. The same mechanism also comes into play (IIRC...) when a USB device is inserted.
A device driver is always "part of the kernel" and it may therefore either be resident, or a loadable module.
Personally, I like to use a bootable-CD distro to determine what drivers are suitable for my system, then
specify those specific drivers in a custom-built kernel. Drivers needed for non-removable hardware are compiled in. Drivers needed for removable hardware
that I know I need, are modules. In this way I am able to
eliminate the "initial RAM disk" step at boot-time altogether. If I don't
have, say, a "DECsystem token-ring adapter card,"
I don't need to build a driver for it and I don't need to search for it at startup time.