Although this is a subjective question, most of the rationale of "hard coding" is so that it is more difficult for a user to change or see the option.
For example, if I were playing with your proprietary media player, and I came across this:
[RuntimeOptions]
ServiceURI=https://mycompany.com:10249/z/ax.php?f=%s&a=%s
It's obvious you don't want me knowing what that does. I'd be inclined to modify it and say:
[RuntimeOptions]
ServiceURI=https://devbox.jedsmith.org/test.php?firstarg=%s&secondarg=%s
To see what your application is requesting at runtime. Hardcoding the value into the executable makes it more difficult but not impossible to still get at and change the value. strings
is your best friend, here.
Note that I've given a specific example, here, and this isn't necessarily the only reason -- just one.
Also, hard coding does not necessarily imply forgoing XML; in fact, the property list format that Cocoa development is fond of allows "hard coding" constants into the application using XML at build time. Not all that goes into an executable is code.