I would tend to thing that they are _equivalent_ modulo two cases:

* In extremely high-performance code the overhead of context.become could be too expensive (closure generation) - use vars
* In all other cases is scopes _exactly_ what's in state to arguments _only_.  This, in general is a good thing(TM). :-)