I'll post the reasons from the book, but I'm not convinced:
- Forces design to be decoupled.
- Forces design to be more abstract.
- Customize without recompiling (also: can work around production issues this way).
- Configuration can be close to problem domain, it's like a domain language.
- Could use the same codebase with different config for two or more separate projects.
I like good design, but I think it can be done without configuration files...