Yeah, I think it's a good idea to clear the subskipxid after the first transaction regardless of whether the worker skipped it.
So basically instead of stopping the worker with an error you suggest having the worker continue applying changes (after resetting subskipxid, and - arguably - the ?_error_* fields). Log the transaction xid mis-match as a warning in the log file as opposed to an error.
I was supposing to make it an error and have the worker stop again since in a system where the xid is verified and the code is bug-free I would expect the situation to be a "can't happen" one and I'd rather error in that circumstance than warn. The DBA will have to go and ALTER SUBSCRIPTION SKIP (xid = NONE) to get the worker working again but I find that acceptable in this case.