I think it is better to have the source code neatly formatted than the generated code.  For example, if you add a div around a call to another template, this strategy would say that you have to go into that sub-template to indent it.  It does not seem maintainable to me.

If you want nicely-formatted output, I would suggest making a filter to format the generated HTML