When using the "undo" function to undo an edit (or a series of edits), changes to all slots should be undone, not just changes to the main slot. The editable slots should be made available for additional editing, as is currently the case for (most) single-content revisions.
At present, undo redirects to a special action that displays a diff with no editing capability when non-main slots are involved, see T200216: Make undo work with SDC by showing a UI to confirm undo without allowing an edit.
Implementing this will depend on the updating of the edit form itself to be able to handle multiple slots. At a high level, the edit form takes serialized Content data for each slot to populate the form. The initial loading of the page (e.g. from an edit link) generally gets this data from a saved revision. When the user requests a preview or diff, it gets this data from the user's submission. An undo would get the data from the Content objects returned by ContentHandler::getUndoContent().
Note that not all content models support direct editing of the content (see ContentHandler::supportsDirectEditing). The undo content for such slots must be preserved through the process of displaying the edit form, displaying any previews and diffs requested by the user, and finally saving the edit. The "edit" interface for such slots should probably display a diff or other indication that changes will be made to the slot. Any previews and diffs requested by the user while editing should include the changes to the uneditable slots.