Maybe a more understandable example for you would be it's use in conjunction with <slot>, shown here: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/...
I thought it was an optimization, but benchmarking `document.createElement` was significantly faster (firefox).
And then having `template` in your html means that changes to the template/use are less local.
I feel like this is an improvement that only makes sense if you're neck deep in the react world.
Another reason I like <template> is the ease of prototyping. A very straightforward approach is to mock up your HTML+CSS with placeholders of what your populated elements might look like. Instead of translating that into JS element generation code, you can simply remove the populated data and enclose the barebones element in a <template> tag.
Back in JS, you might have a simple initializer to add these elements as needed and a function to (re)populate them.
Simple, to the point and no libraries or frameworks required.
I don't know what your benchmarks were exactly, but my benchmarking (also primarily in firefox) shows cloning templates is much faster than `document.createElement` for many tree shapes I was encountering. (Not micro-benchmarks of one element or so at a time, but the tree contents of entire components and "pages" at a time.) That's before learning of a performance tweak I'd missed from reading this thread today (`document.importNode` for template contents cloning to avoid multiple tree walking passes to attach the clone to the document).