This was a real head scratcher given what the developer was seeing vs what I was seeing when we were both editing the page at the same time but seeing different results.
I eventually tracked down the problem, which arises from the Super Progressive Web Apps plugin.
That plugin installs a service worker in any browser that visits the site.
That service worker remains installed and active even if you de-activate the plugin.
So some users (those that visited the site when the plugin was active) will see one thing (in this case, the problem), while other users who visit the site when the plugin has been de-activated will see something else (in this case, everything working normally).
The question of which browser is used (Firefox or Chrome) was a red herring, simply reflecting whether the user had the service worker installed in their current browser or not.
So the problem happens when saving the template because the service worker caches requests that don't then reach the server.
From my understanding of the purpose of the plugin—to give an app-like experience on mobile devices—it should only be operating on the front-end, I don't imagine that you need an app-like experience for working in the WordPress admin pages.
I suggest you contact the developers for clarification: should the service worker be operating on back-end operations. If it *is*, this is creating compatibility issues, and you would need to know more about how to disable it in the back end (I couldn't find any such settings).
You can file support requests on the plugin page: https://wordpress.org/support/plugin/super-progressive-web-apps
Alternatively, submit issues on their github repo: lien caché
I should point out that the only way you can save templates in the back end without the problem recurring is to get rid of the service worker from your browser, and don't reactivate the plugin to prevent it being added again.
In your browser dev tools you can go to the Storage tab and clear each kind of storage.