Could be XML, could be SQLite tables, it really shouldn't matter - the format would not be meant for human consumption, much less editing by hand. It would best be diffable, yes, but not necessarily by diff(1).
I disagree. Unless the Visual editor was incredibly sophisticated, then there's always thing that can be done better by manipulating text.
The textual representation doesn't have to be the primary way of interacting with the program and it doesn't need to be optimal for everyday use - but it should be sane and visually comprehensible when the need arises.
Yes, but the benefits of textual representation you mention are UI too - the text you manipulate does not have to be the same as the serialization format/canonical representation.