When starting bitcoin-qt without a qt-settings file, strOverriddenByCommandLine contains some false values, because OptionsModel::Upgrade() calls OptionsModel::Init() a second time and SoftSetArgs have been set before with default values.
Also to me it looks like OptionsModel::Init() assumes that AppInit2 is called after, but OptionsModel::Upgrade() is called after AppInit2. This would mean that some options set in OptionsModel::Upgrade() are not even applied. For example setting the proxy options through Upgrade() is broken, I assume (havent tested).
So my suggestion is to remove OptionsModel::Upgrade() completely.