I would define both in DIC because it is simpler and we can specify an alias for each. I don't understand why there would be an additional cost in loading the two services (they would just make the DI container a few lines longer right?)

A somewhat analagous implementation is the way in which `twig.loaders` are defined in TwigBundle - as @lsmith suggested, these are defined with `public=false` and the Extension sets up the alias to point to the one specified in the config.

https://github.com/symfony/TwigBundle/blob/master/DependencyInjection/Compiler/TwigLoaderPass.php

So the configuration could be as simple as:

````
cmf_core:
    publish_workflow_checker: default|always|foobar
````