O problema é que o comando message.sh nunca é iniciado. O shell primeiro precisa avaliar o comando $(...) para passar o resultado como argumentos, mas você está usando tailf que nunca termina. Compare com isso:
ls $(echo hello;sleep 10) & sleep 1; ps
O ps mostrará que ls não foi iniciado e só obterá o hello arg quando o sleep 10 terminar e a $() terminar.