Sim, você está certo. Mas a base da pilha é apenas uma parte de toda a história. Por exemplo, o interpretador Java bytecode também é baseado em pilha (o código compilado funciona - por razões de eficiência - de maneira diferente). Isso nos diz que qualquer idioma pode ser transformado em um idioma de pilha.
O que importa são os objetos fora da pilha, aqueles que podem sobreviver à execução atual do método. Desde que a linguagem não tenha nada parecido malloc
ou new
não, não existem esses objetos e você não precisará delete
nem do GC.
Um idioma sem alocação dinâmica de memória é bastante limitado em sua utilidade.