I think I know what happened here -- at some point the email was reparsed, for some reason (we did a fairly large repoarse not too long ago to fix broken header parsing, and it somehow parsed the attachment differently which would delete the old one and insert a new one.
But we don't actually update the attachment ids in the *cf* database -- ever, we assume them to be immutable.
The quick fix is to just detach the thread and then reattach it, but that's not very pretty. Will have to figure out what's a reasonable way to get those updated if this happens :/