Thanks to Barry England and OED, I see what is going on.
The construction is not a compound object or even a compound predicate. It is a compound sentence. That's why there is and rightly should be a comma before "but." And that's why rules for parsing compound objects and compound predicates don't apply.
What comes before the ", but" is a complete independent clause. What comes after the ", but" is also an independent clause but a highly contracted one. The reader is left to supply the missing pieces, using as clues the sense, the indication provided by the adversarial conjunction, case, gender, and any other words the author has supplied.
Joe didn't marry Peggy, but Sue.
From word order and knowing what we do about marriage, we supply the missing parts and understand this compound sentence:
Joe didn't marry Peggy, but (Joe did marry) Sue.
OED has this example:
Thou hast not lied unto men, but unto God.
and expands it to:
Thou hast not lied unto men, but (thou hast lied) unto God.
The "unto" helps. This:
Peter didn't invite Paul, but John.
might slow us down, but we can read through this without hesitation:
Peter didn't invite him, but her.
It makes sense that in Latin, a highly inflected language, this construction is more common than in English.
So the construction is as valid as any other contracted construction and, like other contracted constructions, is most effective when the chance for ambiguity is not significant and a little mental work, but not much, is required from the reader.
Bob didn't call Joe today, so Tom didn't send the report to Frank, but Mary.