Brainstorming use-cases for making keys be manually overridable: making keys a readonly attribute forces us to use traitlets for any properties that need to be synced.   When we have custom serializers, I can see some people possibly wanting to not use the traits framework for an attribute to sync.

For example, I can't figure out how to make a traitlet of a pandas dataframe instance.  I could work around this with a custom serializer and not using traitlets for that trait.  (Arguably, though, we should fix traitlets or pandas, though...)