init can only do what the kernel supports, and in this case that's
setgroups(2) at
http://linux.die.net/man/2/setgroups
init runs as root, then when it needs to create service, forks a child
(which is still root) and the child then executes setuid() and
setgroups() etc. before execing the service.
It sounds like you're looking for a setgroups() which takes a pid
parameter to specify the target process, rather than current process.
I'm not aware of such an API. I think you're best bet is to arrange
that init creates the service initially with the right groups, using
one of the methods discussed earlier.