As for implications...
If the storage representation is quite different from the text presentation (eg, XML vs C-like syntax), then you'll be using a tree as an intermediate representation. Even though "the presentation / editing representation is text", there is a challenge if you want to provide a convention text editing interface, because maybe not all texts can be backward mapped into your tree representation (eg, what about mismatched parentheses)? So what happens? If there is a syntax error, you can't save your file until the syntax error is fixed? Or you provide a "structured editing" interface that doesn't allow you to make syntax errors? What I've read about structure editors is that there's a learning curve, and you run into the problem that a lot of common idioms that programmers learn for editing code using a conventional text editor don't work in a structure editor, creating frustration.