Actually it makes a lot of sense when you think about it. Do you routinely code a new windowing system every time you write an application, or do you code with some toolkit or framework which provides you an easy way to display a window? Do you write a new sound card driver every time you want the computer to beep?
No. Programming is done with APIs, repetitive tasks are done with libraries, and critically tasks which are required to be done every time something happens should be managed by an application and not coded individually every time.
The init process itself is basic. A master process tracks children, a filename decides when to start a service, and a script then manages that start-up. So why is it that sshd which can be started with a single command requires a 200 line script to get going at boot time? Why is it that most of those lines are duplicated. From the point of view of a programmer, and an end user (who has on several occasions debugged problems which were the result of an init script not working properly), a 6 line upstart file, or a 10 line systemd file are far better for something that accomplishes the same thing.
The other problem is that the init scripts are effectively programs that manage the process itself, and they are often based on very manual tasks. I've lost count the number of times I've typed in "service xxxx start" got "service already running PID blah" as a response, and then typed "service xxxx stop" only to get a "Failed" message. Much of the task of the init system which is now manually programmed on a per application basis and maintained manually for each distribution really should be passed on to some helper application.
Sysvinit definitely has it's share of problems. People just put on rose coloured glasses in the wake of the politically charged systemd comments.