Python is more powerful because it's a programming language. Maybe I should have said more expressive, to be more precise. In the context of setting Civ 4 object attributes, logic more complicated than what's expressed in the Civ 4 XML would be possible. Off the top of my head, it might use subclassing for civ-specific object variations, for example. I'm not saying that's necessarily a good example or that more expressiveness is greatly needed, only that it might be useful.
Simpler because it would remove XML and the XML integration, and leverage the Python integration that's present anyway. To me, that and the lighter lexical syntax of Python are the more compelling reasons why a Python framework might have been better.
> [XML is] also extensible, so new attributes can be easily added to it.
Do you think new attributes can be added more easily with XML than with Python?
> And even if you did decide to push all of the variables into python it would be a pain to modify and track them all.
I don't see why. The code that sets the object values would be structurally identical in either Python or XML and different only in the particulars of the syntax. The structure could be different in Python, for example if information could be factored out with subclassing, but it wouldn't have to be different.
> You can add 1 + 1 in python, but you wouldn't want to store a database there.
I'm sorry to nitpick, but the issue is the database of Civ 4 object attributes in particular. The fact that XML was designed for some class of tasks doesn't imply that it's best for this task.
You mentioned other tools. For example, if I understand correctly you have an Excel-based editor for FfH. Is it easier for that to generate XML than Python?