If you're designing an XML representation of some type of data, and you want a key-
<sometagorother foo=bar />
Now occasionally I can understand that you might want to layer your own key-
<set key="foo" value="bar" />
because this approach gives you the ability to add extra attributes alongside each key/value pair, which might be useful for all sorts of vaguely sensible reasons: expiry dates, permissions, conditionalisation, you name it. Also it doesn't require you to specify the full set of possible keys in the DTD, which is obviously useful.
However, when I see a third layer of key-
<method name="SetVariable">
<arg key="name" value="foo" />
<arg key="value" value="bar" />
</method>
… I really do start to wonder whether someone's brain has been EATEN BY PARASITIC XML MEMES OF DEATH.