My idea is to put all user-changeable options to config.default.php, then it can be implemented as simply overwriting current config with user values. Allowed keys would be stored in $cfg array, making the list easy to modify if needed. That would also allow setup script to show which config values can be changed by end users.
Now I can see feature request to making this list also configurable ;-).
Now that you mention it... yes, it should be configurable in setup script.