I'm not so concerned about the PreferredVolumeChooser, because it's just one possible implementation, which could be swapped out with a different behavior. I'm slightly concerned about the PerTableVolumeChooser falling back to a default. It should probably fall back to whatever the default value is for table.volume.chooser (in DefaultConfiguration).
I'm more concerned about other places, like whatever VolumeManagerImpl is doing, where we just don't have an appropriate scope available to configure for that case. In these cases, if the situation warrants it, I think we should think of it as a distinct scope, and do whatever it is we do for
There may be some utility in specifying a failsafe chooser (in the case of an actual failure... not just an overlooked scope which doesn't have a configuration point), for example if the specified one for that scope cannot be loaded from the classpath. However, at the risk of introducing an infinite regress (what happens if the failsafe fails to load?), it might be better to just fail until the config/classpath is fixed.