I found that the problem was caused by emojis in the content widgets :(
They would render fine in preview, outputting markup like this on the preview page:
<img alt="😉" src="https://s.w.org/images/core/emoji/2.4/svg/1f609.svg" />
In both the Visual and Text tabs of the Text Block widget the emoji image itself displayed (no codepoint html reference in the text tab)
For some reason, after publishing a content widget with an emoji in it, Avia Layout Builder would revert to the last save that didn’t have any emoji.
This has been confirmed by making numerous different edits, publishing and removing emojis and republishing