The WebIconDatabaseEnabledDefaults preference in NSUserDefaults is always registered as a default. This will override any default (i.e. value in the registration domain) that might be set by the client app. This means that the client app can never set its own default value. That is of course wrong. This value should be set ONLY when there is no value registered in the default domain.
In fact I now see this is true for basically all preferences registered by WebKit.