I can actually see this as being a useful thing (at least controls and mame's xml).
For my own pet project, ROMLister, controls.dat has some really useful information, but it lacks the screen orientation data that I also use. Currently, ROMLister opens either of the 2 files, and you get to work with whatever data is inside each. Having them combined into 1 file would (for me) be the best of both worlds.
I almost starting writing a program that does exactly what you're proposing.
If you write one, I'd use it. If you write it in C++ and open source it, I'd fold your code into my project and give you a big kudos.
For my purposes, if you took mame's xml output and skipped all of the ROM CRC details, and merged it with controls.dat, you'd actually end up with a smaller file to work with. My software isn't written in a way that loading in both files and merging would be useful-I never actually read the entire file in at once at any time.
http://www.waste.org/~winkles/ROMLister-jeff!