O comportamento "padrão" de um terminal é terminar quando o programa que foi instruído a executar estiver concluído. Isso acontece porque essa é a coisa mais prática a ser feita. Se você deseja ler a saída antes que ela desapareça, considere adicionar um comando no final da seguinte forma:
urxvt -e sh -c 'cowsay howdy?; sleep 1337'
Alguns terminais, como o rxvt-unicode, têm uma opção para aguardar até serem fechados pelo gerenciador de janelas:
-hold|+hold
Turn on/off hold window after exit support. If enabled, urxvt will
not immediately destroy its window when the program executed within
it exits. Instead, it will wait till it is being killed or closed by
the user; resource hold.