I agree it would be nicer if we could make the teaser html, but I don't really know a good way to do it and ensure that the resulting fragment is valid.
the special tag (<!-- break -->) implementation present in for example Drupal
That doesn't sound very great to me, it doesn't guarantee correct closing tags to just truncate based on finding this. Consider this markup:
<div><p>Blahh Blah <img src="http://whatever.com" alt='' /> <!-- break --></p></div>
Truncating it at the break is going to leave unclosed tags and real world examples are going to be much more complex markup.
If you can show me an effective method where I can pass in html and get back a valid fragment of a passed in length I will happily integrate it if it really works and is not too complex or expensive to call.