I once tried to use 'revert-buffer-function' to restore
xref buffers from the desktop, but abandoned the idea.
Not because xref.el doesn't set 'revert-buffer-function'.
But because it would take too much time to restore
the desktop while it will rerun all saved xref buffers.
OTOH, saving an xref bookmark makes more sense.
And probably your patch will help to implement
'revert-buffer-function' for xref as well.
I don't think bookmark would save the whole buffer contents. Would it?
Otherwise, re-running the search(es) seems inevitable.
Indeed, saving the buffer contents of transient buffers
either to the bookmark or to the desktop makes no sense.
So re-running the command is inevitable.
But then I can't imagine how would it be possible
to move point to its saved location when initially
a restored buffer is empty before re-running the command.