Hi Eric, sorry for the delay! The one use-case I was considering is whether the portal might expect to be able to read a portlet's preferences from the persistent store, without the portlet having ever called store() explicitly. However, I don't think this is a valid use-case, because it assumes that the portlet must have retrieved its preferences at least once (which currently would store them). So, I think it makes sense to remove the call to internalStore() from the PortletPreferencesImpl constructor. Removing the call would also be very good for efficiency and performance; for example, right now if 1000 users view the same portlet, there will be 1000 copies of the same default preferences in the persistent store, even if none of the users actually changed the portlet's preferences.
The one suggestion I have is to make internalStore() protected instead of private, so that the method can be used if someone wants to modify the behavior by extending the class.