Readability, being able to hand-code the protocol strings (for a quick testing) etc. are very essential. Perhaps ideal approach is to makeprotocols and specs simple for hand-coding use and progressively becomes complex as you use more and more involved features.
This is specially true for wiki interfaces where markup is almost always handcoded. For e.g. a simple table with few rows and columns is a breeze. In TWiki, you can manage more complex tables by adding a macro (with handled it via special UI). But this approach is still limited because the simple markup characters such as "|" can't be used in cell's text (in which case, they mess up the complete layout). It is, in theory, possible to encode these characters and make each cell more complex (additional markup for protecting special chars etc.,). But since it helps only 5-10% of use cases (perhaps much less!), I guess no one will bother.
Use of tools can allow more complex markups, but then the fundamental premise is altered. I guess no one will truly feel at home with tools unless they know they can manage the generated code. For example, many CSS tools generate very good markup. And some of the CSS plugins in Firefox allow you hand-edit this type of CSS and see the changes live. (But not sure whether such manual changes will be read again properly by tool; in CSS it seems to be easy.) I used to hope for such an approach in TeX world, but it never happened.
My colleague also pointed out this old article from Michael Fitzgerald explaining why RELAX NG might be preferable to XML schema.