What is the purpose of the $before and $after arguments on the the_title() function?

Both methods are just fine. Before and after parameters are not there for just only passing htags into it. you can have any type of strings, image or html set to before and after parameters.

This is WordPress way and they have set the standards just like any other CMS or Framework. so its always better to follow these standards.

Secondly: i’ve not seen source of the_title yet. maybe this helps in generating error free html output and even they may validate and filter passed texts.

Lastly in my opinion it looks more professional way of coding to me.