1. Provides clean separation of concerns
It provides very clean and controlled HTML output. It is very scalable in terms of functionality and also helps in great design.
2. Provides better code extensibility and re-use
One can re-use the code and is the pretty good advantage of this and one can keep customising it. Re-using the object code is really easy to change some part of the code that makes less development and maintenance cost.