Is it any more hacky than meta-programming in LISP?
It's not elegant. Well some of it is, but most isn't. But it's well understood, matches the philosophy of the operating system and doesn't introduce any new tools or mechanisms which have a learning curve on them.
I'm not a Lisp person, but I understand that meta-programming is an integral part of Lisp. On the other hand, parsing comments to extract dependencies is special-casing shell comments for the needs of the init system. That's what I would call a hack.
As for matching the philosophy of the operating system, you go from one process which launches scripts which in turn launch programs, to one process which reads a configuration file in order to launch programs. That's a simplification. It also means that you no longer have an /etc/init.d filled with executable files. And the underlying mechanism used by systemd to order dependencies (blocking on sockets) particularly fits the Unix philosophy.
Mind you, I'm not really comfortable with systemd overtaking udev and syslog (resistance is futile...) but that's a different debate.
It's not elegant. Well some of it is, but most isn't. But it's well understood, matches the philosophy of the operating system and doesn't introduce any new tools or mechanisms which have a learning curve on them.