I had this question when I was trying to compile my own kernel.
The answer (found in the help section for a kernel option) is because with certain drivers the firmware needs to be loaded BEFORE the driver is loaded.
If the driver is compiled as builtin the firmware doesn’t have a chance to load before the driver is loaded. When compiled as a module the firmware has a chance to load before the driver is loaded.