There's one more reason to use XML: XML schemas. XML schemas are neat because you can express fairly complex datatype restrictions in it, and catch violations at parse time. This is a significant win; just like you don't have to write a lexer/parser for each app, with schemas you no longer have to write a type-checker at each input interface. Nice!
Unfortunately, I've lost count of the number of different, incompatible approaches to this idea. The last time I looked at it seriously (a couple of years ago) there were at least six different schema languages. Oops.
Also, there's a very good reason *NOT* to use XML: XSL. The transformation language is really stinkingly ugly. It's like a simple functional language from which they've removed the user's ability to write functions -- wtf? Worse, they put it in XML syntax, which makes it nearly unreadable. XSL's predecessor technology DSSSL is superior to it in basically every regard. If you have to use XSL I just feel pity.