O comportamento padrão do bash é retornar o status de saída do último comando no pipeline, como em seu script. Parece que você ativou a opção pipefail no shell interativo que força o retorno do último comando com status de saída diferente de zero. Veja como funciona:
$ set -o pipefail # enable pipefail
$ false | true
$ echo $?
1
$ set +o pipefail # disable pipefail
$ false | true
$ echo $?
0