Stefan, Kenneth and I discussed this on an earlier diff.  This is what I said:
Unfortunately, UPnP spec says that ordering is important and compulsory. Some testing indicates that Sonos might not mind, but I don't think we can rely upon their non-compliance with the spec. Ordered dicts are not an option, since you have to initialise them like this: OrderedDict([('key1', 'value1'), ('key2', 'value2')]) or they lose their ordering, and this is no better than using a list of tuples. unwrap_args returns a dict because we don't care about ordering, and a dict is much easier to extract the value you want from.

I would love to be able to use kwargs but it is not an option because the order of the args is not preserved by python