An interesting question. I have not a final answer but some hopefully useful information.
The actual behaviour is defined by the POSIX standard (and was so always).
But the Linux kernel uses a different thread model internally. So it had to be changed to provide full pthread compatibilty. See this PDF from 2002:
POSIX Threads and the Linux Kernel[
^].
The changes has been implemented with kernel version 2.6 (see
Native POSIX Thread Library - Wikipedia[
^]).
So older kernels used
LinuxThreads - Wikipedia[
^] which are not POSIX compatible and might behave differently regarding child threads (which did not exist with the LinuxThreads model that uses so called "tasks").