TL; DR
Existem várias razões para usar variáveis de ambiente em vez de arquivos de configuração, mas duas das mais comuns a serem ignoradas é o valor de utilidade da configuração fora de banda e separação aprimorada entre servidores, aplicativos ou funções organizacionais. Em vez de apresentar uma lista exaustiva de todas as razões possíveis, abordo apenas esses dois tópicos em minha resposta e toco levemente suas implicações de segurança.
Configuração Fora da Banda: Separando Segredos do Código Fonte
Se você armazenar todos os seus segredos em um arquivo de configuração, precisará distribuí-los para cada servidor. Isso significa verificar os segredos no controle de revisão ao lado do seu código ou ter um repositório ou mecanismo de distribuição totalmente separado para os segredos.
Criptografar seus segredos realmente não ajuda a resolver isso. Tudo o que faz é levar o problema a um ponto, porque agora você também precisa se preocupar com o gerenciamento e distribuição de chaves!
Em resumo, as variáveis de ambiente são uma abordagem para mover os dados por servidor ou por aplicativo para fora do código-fonte quando você deseja separar o desenvolvimento das operações. Isso é especialmente importante se você publicou o código-fonte!
Aprimore a separação: servidores, aplicativos e funções
Embora você certamente possa ter um arquivo de configuração para guardar seus segredos, se você armazenar os segredos no código-fonte, terá um problema de especificidade. Você tem uma filial ou repositório separado para cada conjunto de segredos? Como você garante que o conjunto certo de segredos chegue aos servidores certos? Ou você reduz a segurança tendo "segredos" que são iguais em todos os lugares (ou legíveis em todos os lugares, se você os tiver em um arquivo) e, portanto, constituem um risco maior se os controles de segurança de um sistema falharem?
Se você deseja ter segredos exclusivos em cada servidor ou para cada aplicativo, as variáveis de ambiente eliminam o problema de ter que gerenciar uma infinidade de arquivos. Se você adicionar um novo servidor, aplicativo ou função, não precisará criar novos arquivos ou atualizar os antigos: basta atualizar o ambiente do sistema em questão.
Pensamentos sobre segurança
Embora uma exploração completa da segurança do kernel / memória / arquivo esteja fora do escopo desta resposta, vale ressaltar que as variáveis de ambiente por sistema implementadas corretamente são menos seguras que os segredos "criptografados". Nos dois casos, o sistema de destino ainda precisa manter o segredo descriptografado na memória em algum momento para usá-lo.
Também vale ressaltar que, quando os valores são armazenados na memória volátil em um determinado nó, não há arquivo no disco que possa ser copiado e atacado offline. Isso geralmente é considerado uma vantagem para os segredos da memória, mas certamente não é conclusivo.
A questão das variáveis de ambiente versus outras técnicas de gestão de segredos é realmente mais sobre segurança e usabilidade trade-offs que se trata de absolutos. Sua milhagem pode variar.