There are two reasons: 1) I had parser.add_options(..., default=config.get(...)) first so I had to deal with the NoSectionError and NoOptionError exception somehow. 2) The current code only honors options in the config file if they are set to some non-empty value. This would mean that all the parser.update_default calls need to be guarded with if config.has_option(...) and config.get(...) if fill_config_with_default_values were removed. Making sure that config.get never fails with NoSectionError or NoOptionError made those ifs just a bit shorter.

I don't have a strong opinion on that and do not care a lot. If you want it removed, that's possible.