I am open to scripting, and almost mentioned the currently feasible "unpacking" method in my post. :-)
My gut feeling is that JSON would be tough to do in most calling apps, so I'd have to do my own parsing on the receiving end, but it'd probably be a good enough approach in simple cases.
How about a reserved URL parameter prefix for user variables?
Something like editorial://?command=MyWorkflow&usr_myVar=foo, which then does workflow.set_variable('myVar', 'foo') in MyWorkflow's environment before running it.
That way, I could add as many usr_ prefixed variables as I like, and you'd only have to avoid using that prefix in future keywords.