Answer
If a custom LU's table gets stuck out of sync with its model like this, a recovery sequence that's worked: unpublish the LU, disapprove the LU, manually DROP the underlying custom table via SQL and commit, then re-approve and re-publish the LU — this forces the table to be freshly recreated to match the current model rather than trying to reconcile an already-drifted table through further Synchronize attempts. Treat this as a last-resort recovery step (since it does drop the table's data) rather than a routine fix, and check first whether a page/action still had 'create projection' checked, which is worth reviewing as a possible contributing factor to the drift in the first place.