Nem sempre é possível ou útil executar partes de um script em um subshell.
Eu também uso pushd
/ popd
em scripts (não importa, porque eu geralmente tenho bashisms em meus scripts de qualquer forma), mas no meu entendimento isso é principalmente um recurso de conveniência para um shell interativo, e usando subcamadas não deve ser esperado para ser divertido.