Shepherd is one of those things that put me off a little bit when I first started using Guix (just because I wasn't used to it yet), but I've really grown to appreciate it.
The other init systems I'm most familiar with are systemd and sysvinit. Systemd is nice and easy from a user's perspective, but it's not all that flexible if you want to do something systemd doesn't already support. Sysvinit on the other hand is minimal and flexible, but I have no desire to write a classic init script at all.
Shepherd is somewhere in between. It's extremely flexible (for example Guix added a containerization feature to use in Shepherd services, and due to Shepherd's design that's just a module within Guix; it doesn't have to go in upstream Shepherd) and yet writing services is pretty simple.
The other init systems I'm most familiar with are systemd and sysvinit. Systemd is nice and easy from a user's perspective, but it's not all that flexible if you want to do something systemd doesn't already support. Sysvinit on the other hand is minimal and flexible, but I have no desire to write a classic init script at all.
Shepherd is somewhere in between. It's extremely flexible (for example Guix added a containerization feature to use in Shepherd services, and due to Shepherd's design that's just a module within Guix; it doesn't have to go in upstream Shepherd) and yet writing services is pretty simple.