Porque você não está usando bash ou outro shell que entenda &> . Observe a linha no topo dos seus scripts de shell:
#!/bin/sh
Esses scripts de shell serão executados com /bin/sh . Em muitos sistemas que são ligados simbolicamente a bash, mas aparentemente não no seu. Provavelmente, é dash ou alguma outra alternativa leve.
& é usado para colocar comandos em segundo plano em scripts de shell. Seu shell está interpretando o & in &> com este significado. Então, em test-amp-gt.sh :
#! /bin/sh
cat input.txt &> /dev/null && echo "DEBUG &>"
Primeiramente, ele inicia cat input.txt no segundo plano, depois vê > /dev/null , que aparentemente ignora, e executa echo DEBUG &> , que é gerado como deveria. Seu script, em seguida, é concluído, o shell que você chamou test-amp-gt.sh from imprime seu prompt e, em seguida, o cat no plano de fundo gera input.txt .