That is because remove-overlays
uses eq
when testing an overlay-property's value. But two strings are only eq
ual, if they are the same object.
Usually one adds a symbol-property property with a constant value, usually t
, in order to keep track of onesone's overlays.