In Kumar's answer to "How to wrap code/text in Jupyter notebooks" he provides a screenshot of Jupyter's word-wrapping options. These options are documented in the pull request Add wordWrapColumn
and bounded
line wrapping modes by AlbertHilb ยท jupyterlab/jupyterlab. Unfortunately all these settings don't seem to automatically add new lines, they just determine where the wrapping happens visually.
For now my workaround is to add a ruler (see python 3.x - ipython3 notebook vertical margin/marker line at 80 characters - Stack Overflow) and manually wrap.
I'm saving my content in the the MyST format, which makes version control much easier. Hence the question (users saving to JSON wouldn't need this).