Currently there is MarkupBuilder and StreamingMarkupBuilder. These should be different implementations of the same interface. The choice of streaming or non-streaming should be a constructor parameter or static virtual constructor parameter, not a difference in (visible) class name.
The design should factor in JDK8's stream capabilities.
Assuming Groovy adds support for Java9 modules, this class would likely reside in a new XML module along with a revamped slurper/parser. While designing the module system or setting up the envisaged XML module aren't really within scope of this issue, it would be good to factor in the requirements we know for JDK9's module capabilities, i.e., it should have a unique package structure.