É porque o Bash se comporta de maneira diferente quando $0
é sh
.
De Comportamento do Bash [Wiki do Bash Hackers] :
% bl0ck_qu0te%Mais informações podem ser encontradas no Manual de Referência do Bash: Modo Bash POSIX especificamente:
% bl0ck_qu0te% é por isso que o script sh
está falhando, pois a sintaxe <(..)
está usando a substituição do processo.