Isso é simplesmente porque o limite foi definido dentro do script de shell, isto é, o shell ( bash
neste caso) gerou executando o script (o kernel na verdade coloca o script como um argumento para o shell).
Assim, quando a execução do script estiver concluída, o shell desaparecerá (e o limite) também. E você está de volta ao seu escudo original.
Para testar, execute o ulimit -n
dentro do script.