Your question answers itself, this happens because these processes are running as children under the terminal emulator. So you kill the terminal emulator, and in doing so, kill all children processes (since the children are running under the same process group as the controlling terminal emulator).
See, for example, the following:
csb@darwin[~]$ ps fauwx | grep -A6 "xfce4-terminal" | awk '{ for (i = 2; i <= 9; i++) $i="" ; print $0 }'
csb 0:32 xfce4-terminal --geometry=271x65 --display :0.0 --role=Terminal-0x1340050-2606-1351620352 --show-menubar --show-borders --hide-toolbars --working-directory /home/csb --tab --working-directory /home/csb
csb 0:00 \_ gnome-pty-helper
csb 0:00 \_ bash
csb 0:00 |
\_ ssh [redacted]
csb 0:00 \_ bash
csb 0:00 \_ ps fauwx
csb 0:00 \_ grep --color=auto -A6 xfce4-terminal
csb 0:00 \_ awk { for (i = 2; i <= 9; i++) $i="" ; print $0 }
All of these processes are running under the 'xfce4-terminal' processes, so if I kill that process then it will kill automatically all child processes in the process group...the same way, for example, that exiting the terminal emulator window would necessarily kill my SSH connection.
Programs such as shells create new process groups, usually placing related child processes into a group. Each job is a process group. Outside the kernel, a shell manipulates a job by sending signals to the job's process group with the killpg system call, which delivers a signal to all the processes in a process group.