Sysvinit also works. How is writing init files cumbersome? Writing startup dependencies is easy - there is the Required-Start header in the ### BEGIN INIT INFO block where you put the required services.
Because of the stuff you just mentioned. I don't know if a process has started (status could be wrong), don't see the output. Also you enter a dependency hell with this type of info block.