I'm surprised that PersistentLocale does not have the ability to clear the value once it's set. Looking at PersistentLocaleImpl it doesn't allow setting to null.
Perhaps you could override / decorate PersistentLocale to support clearing the value (by setting null). If decorating, you'll likely require a PerThreadValue. If overriding, you'll likely copy / paste / tweak PersistentLocaleImpl.