With DSO, modules can be added and removed without recompiling the
server, and their code is even shared among multiple servers.
You can compile just once and yet have more than one binary, by using
different configuration files to load different sets of modules. The
different Apache servers loaded in this way can run simultaneously to
give a setup such as that described in the second option above.
The downside is that you are dealing with a solution that has weak
documentation, is still subject to change, and, even worse, might
cause some subtle bugs. It is still somewhat platform-specific, and
your mileage may vary.
Also, the DSO module (mod_so) adds size and complexity to your
binaries.