outer & cria uma subchave. $! fornece o PID deste subnível.
tail -f /dev/null é um filho desse subshell, então ele tem um PID diferente. Mas você pode fazer
exec tail -f /dev/null
em vez disso. Então o kill atinge o tail .
Outra possibilidade é usar /bin/kill em vez do shell embutido. Com um número negativo como argumento, você pode matar todo o grupo de processos:
/bin/kill -TERM -$!