Yeah exactly, all ajax operations are keyed by a unique operation_name. By default the ajax requests are fired at cm_tool's menu hook which loads the CMToolsAjaxOperation with this name. The handler for such a plugin implements an 'execute' method which just needs to return the ajax commands array it wants.

This has some benefits:
  1. Consistency: E.g. the same alter hook is triggered over the commands response for all ajax operations
  2. Convenience: Assuming one finds implementing a Ctools plugin more convenient / nicer / easier-to-read than a custom menu callback.
  3. In principle the system could be transparently extended to do things like support multiple operations in the same request etc and operation implementors wouldn't need to care. etc

I like it =p

The Drupal.CMToolAjaxOperation() method supports a 'path' parameter for pointing the ajax request at a different path, so there's nothing stopping you using a custom menu callback if it seems like a good idea in certain cases.