Das einzige, was gegen eine andere Programmiersprache als Mapeditor spricht, ist a) die fehlende Interoperabilitaet der verwendeten Sprachen und b) dass es eventuell ganz nett sein kann, wenn man InGame Editieren kann.

a) Beim Schreiben von Dateien und uebergabe von Werten nach aussen stellen sich manche Programmiersprachen recht umstaendlich an (ich denke da z.B. an Fortran zu C Schnittstellen - gruslig). Bei C# zu C++ sollte das allerdings kein Problem sein, zumal du ein Textbasiertes Mapformat verwenden willst.

b) Was mich z.B. beim Maker schon immer gestoert hat, ist, dass man innerhalb des Spiels nicht bestimmte Dinge editieren kann. Man spielt das Spiel, sieht einen Fehler, beendet das Spiel, editiert, startet das Spiel neu, spielt zu der selben Stelle und sieht nach, ob der Fehler behoben ist. Effektiver waere es ggf, wenn Spiel und Editor in ein und dem selben Programm stecken. Man baut die Maps und Events sozusagen, waehrend man sich darauf befindet, bzw wechselt auf Tastendruck zwischen den beiden Modi. Spiele ich das Spiel normal und sehe, dass ein Objekt unerreichbar ist, schwupps kann ich es korrigieren und einfach weiter spielen. Sehe ich einen Bug in einem Script oder einen Typo in einer Messagebox, zack, sofoert korrigiert. Das funktioniert aber natuerlich nur, wenn der Editor in der selben Sprache wie das Spiel geschrieben ist (oder du musst mit DLLs arbeiten).

Was die Frage bzgl. Text vs. XML angeht: XML ist grauenvoll !
Ich hab mal ein Projekt gemacht, dass auf XML Basis gearbeitet hat und muss gestehen, dass ich das Format danach nie wieder angefasst habe. XML hat einen riesigen Overhead und ist vom Format her einfach total ueberladen. Einen XML Parser zu schreiben oder auch nur einen fertigen zu finden, der ALLE Features von XML implementiert, war damals ein Ding der Unmoeglichkeit. Das System ist weder besser menschenlesbar, als ein ordentliches Plain-Text-Format, noch ist es besser maschinenlesbar. Zudem ist es durch sein starres Format sehr fehleranfaellig, was tippfehler etc angeht und beschissen zu editieren, vor allem bei groesseren Dateien.

Ich wuerde ja zu einem ordentlich dokumentierten Binaerformat raten, in dem die entsprechenden Mapdaten nativ abgelegt sind. Ist interoperabilitaet zwischen verschiedenen Architekturen ein Problem, dann wuerde ich einfach ein Tool schreiben, dass die Binaerdaten in ein austauschfaehiges menschenlesbares Textformat umwandelt (ggf mit zlib komprimiert), welches man auf der anderen Architektur einfach wieder in deren natives Binaerformat uebersetzt. Das ist nicht nur am schnellsten, sondern auch am speichersparendsten. Und als weiterer Bonus: du brauchst keinen aufwaendigen Parser zu schreiben.