If you've ever had to build a static website from scratch, with the same navigation, footer etc. on each page, and without using frames, then you'll appreciate the amount of work that a templating engine saves you (whether JS-based or else).
Every time i start making a static website, i end up needing to include a table (or some other structured display of data) and then just switch to JSX to render the data with a loop. Sometimes i then render it as html and deploy, and sometimes i deploy it as react. But that’s how i usually end up using React even when static.
I use JSX because it's a nicer templating system than EJS or similar. It allows me to write components to encapsulate reused fragments rather than text manipulation. And I like it, which counts for something.
Candidly, this is something that people who fulminate about React probably should know before they start talking.
For example, I've been working on a character generator for the Inquisitor tabletop game. It's completely static because I just SFTP the build output to my webserver, but it uses React and JSX.
I wouldn't go back to doing text manipulation to generate HTML, because I value not having to make sure I've escaped all my quotes.
For instance, CFML:
<ul> <cfoutput query="people"> <li>#firstName# #lastName# </cfouput> </ul>
You can also write classes that return data and custom tags that return rendered html.
<cf_PeopleList queryObject="#people#">
I'm not saying we need to go back to those languages necessarily, but I think there's a ton of misconception about how those languages can be used, and quite a bit of reinventing the wheel in the Javascript world.