cgroups just enable systemd to collect all of the log entries from all of the processes belonging to a service without missing any*. When a sysvinit service daemonizes itself, the pid of the daemon isn't the same as the pid of the process that init actually created. This means that every service has to keep track of its own pid (in a pidfile), and that every service would have to report this information to syslog somehow.
Or you could add this capability to init, but then your new init is no longer doing just one thing and this is exactly the complaint most people have about systemd. Also, be careful not to change the existing interface with syslog, because then you're imposing your own views on everyone else, just like folks are saying about systemd.
Oh, and if your service logs to syslog, and it's being run under systemd, then systemd intercepts those and attaches all of the extra metadata before adding the log entry to the journal. You don't need to rewrite anything to be compatible with systemd. In fact, if you also have syslog installed then systemd will automatically send everything that gets logged to syslog as well; you get both at the same time and neither steps on the other.
I don't like systemd because it is systemd, I like it because it gives me a great way to query my logs and find out what my systems have been up to. If you give a sysvinit system the same capabilities then I will use those capabilities just as often.
* Well, cgroups also let systemd do a few other things not related to logging, such as setting resource limits on individual services, but I don't use them much myself.