Killing a parent process won't kill child processes unless the parent traps and resends the signal.
Killing a process group with TERM sends the TERM signal to all members of the process group so that's the way to go, but you should make sure that the parent starts a process group (or that the parent's parent starts a process group and you don't care about the parent's parent getting possibly getting a the TERM signal if it's still alive).
If you're using a shell to start the parent (or the parent's parent), then you don't have to worry about that because each command invocation in the shell does start a process group.
(There's a Linux specific feature that may be used to tell the kernel to send children processes a signal when their parent dies, but in your standard Unix, this does not take place as far as I know. Check out prctl(2) and search for DEATHSIG if you want to learn more about it).