Creio que o Juliomar quis dizer mais sobre a questão do alto acoplamento e a não separação de responsabilidades.
É muito comum em quem programa em Delphi a vida toda, sem muito contato com linguagens/frameworks totalmente "object oriented", como C#, Java e Dart.
Apesar de o software ser cliente/servidor eu uso essa abordagem que você comentou, criando e destruindo um DM para montar o XML da NFe/NFCe, concentrando métodos, validações, etc. É mais uma questão de conveniência, mas o ideal seria criar uma classe de montagem, abstraindo o ACBR e agrupar toda a lógica internamente.
Porém no caso de uma API, ou serviço de autorização (meu caso) não vejo com bons olhos utilizar data modules: não tem interface, seria melhor instanciar as classes "on-the-fly" e liberar imediatamente a cada requisição. Cada qual é única, não deveria se misturar com outras sessões.