Because every moving part in the system increases the amount of testing that needs to be done in order to ensure that things actually work together well. Of couse, that kind of testing never happens, so what we get isn't choice between several different, but working implementations, but choice between several different kinds of crap, the least bad of which one has to put up with.
> Says who? Different applications and workloads may need different init systems. A person may need a "give me a text shell as fast as you can" or "restart the database really fast" or "show me my graphical desktop, even before the network is up" use cases. Some workloads are better served by upstart's logging and start-daemon-on-demand. There is no init system whose size fits all.
Name one inherent reason a single init system can't do all of those things well.