An important difference between different approaches to building NLG systems is the skills needed to use these approaches to build systems. Machine learning requires the most skills, smart templating the least, and simplenlg-type programmatic approaches are in the middle.
Some comments on how different components in the NLG pipeline can “add value” by contributing to the ultimate goal of generating texts that easy for people to read and understand.
I dislike talking about “NLG” vs “templates” because these terms are poorly defined. I prefer to talk about five levels of sophistication in generating texts, which I describe in this post