Yes, certain code duplications are notoriously difficult to factor out without making the readability significantly worse. In such situations I leave a TODO
in comments as a reminder that there is some duplication but at the time of writing it seemed better to leave it like that.
Usually what happens is what you write in your first point, the duplications diverge and are no longer duplications. It also happens that the duplication is a sign of a design issue but it only becomes clear later.
Long story short: try to avoid duplication; if the duplication is notoriously difficult to factor out and at the time of writing harmless, just leave a comment as a reminder.
See also 97 Things Every Programmer Should Know:
p. 14. Beware the Share by Udi Dahan
The fact that two wildly different parts of the system performed some logic
in the same way meant less than I thought. Up until I had pulled out those
libraries of shared code, these parts were not dependent on each other. Each
could evolve independently. Each could change its logic to suit the needs of the
system’s changing business environment. Those four lines of similar code were
accidental—a temporal anomaly, a coincidence.
In that case, he created dependece between two parts of the system that were better kept independent. The solution was essentially duplication.