The sysv init was never finished.
Okay.
If you notice there are some similarities of inittab and a makefile.
What?
The idea was the runlevel and action fields could be used for dependency and concurrency.
But both of those things are actually used. So are the IDs, they actually have meaning. And the runlevels are part of dependency. You pass through runlevels on your way to other runlevels.
The run levels A,B & C are hints of that as is the current total lack of use of the id field.
Almost total. It's relevant to ttys :)
Init's early features were limited because it could never be paged out
init being limited is good. We want it to be simple. It doesn't often have to do anything but you want it to respond right away when it does. Today we can afford to burn more memory so we can afford a more complicated init from that perspective, but having more complexity in the one of the two processes that absolutely must not have a problem which has always been very simple is very arguably not the best idea.
With all of that said, none of what you said addressed the question. What's so bad about init scripts? Allow me to pose my version here: Given that most users will never need to write an init script or unit file, for the same reasons, what is the problem with init scripts supposed to be? I can take an ancient init script and slap it into place on a modern system and it will likely still work, and if I want boot order dependency to work I will only need to slap some structured comments into the top of it.
My recollection of the Debian argument for systemd looks like this: "GNOME is going to it and some maintainers are confused by writing init scripts." But understanding Debian packaging (bop it! twist it! pull it!) is like ten times harder than that, so I just don't get this argument at all. I do comprehend the GNOME argument, I just don't find it compelling because GNOME was enshittifying at the time, so it wasn't worth enshittifying Debian with systemd.