Para o AST homogêneo, você geralmente acaba com algum tipo de rotina ou classe com uma grande declaração switch . Você precisa acompanhar qual nó filho é o que você mesmo. "Primeiro filho é o condicional, segundo o bloco verdadeiro, terceiro o falso bloco." Sempre que você altera o código, você se vê facilmente fazendo uma imagem mental de sua sintaxe DSL repetidas vezes.
É claro que você pode documentar muito, mas um bom programa deve ser auto-documentado o máximo possível. A AST heterogênea faz exatamente isso.