From choria-legacy/mcollective-choria#576, the -T collective option has been added to the federation application directly. When I try use this, it doesn't appear to override the main_collective setting in /etc/puppetlabs/mcollective/client.cfg.
I do something a little odd; I set a default collective of one that doesn't exist to force the admins to think about what collective they are sending the message to (rather than defaulting to our entire estate):
main_collective = deliberately_broken
[biguml@federator ~]$ mco federation trace nodename -v -T all
The federation application failed to run: Unknown collective 'deliberately_broken' known collectives are '...'
The environment variable MCOLLECTIVE_FED_COLLECTIVE also doesn't seem to work, but that may be a side affect of not importing all the mcorpc code, as you say.