Вы (разработчик) должны иметь возможность переключаться между различными конфигурациями для разных версий вашего программного обеспечения в любое время. Если каждая настройка имеет свой собственный файл конфигурации, это намного проще, чем если бы все они использовали один и тот же файл.
Если у вас есть вся конфигурация в одном файле, вы должны прочитать весь большой файл, решая, какие части игнорировать. Это сложнее, чем просто читать весь файл.
(Я предполагаю, что вы можете иметь несколько версий программного обеспечения, установленных одновременно в разных местах на одном компьютере. Если вы не можете, у вас есть большая проблема. Но даже в этом случае, наличие отдельных файлов конфигурации полезно.)
Это сильные «плюсы» для отдельных файлов конфигурации - они перевешивают второстепенный «минус»: вы должны определить, где находится файл конфигурации по тому или иному механизму. Это может быть через переменную окружения или через параметр командной строки, с подходящим значением по умолчанию, если ни один не указан. Командная строка должна переопределять окружение.