Тут же вопрос обычно в разделении на пару ключ/значение там где оно не надо. Если ключ маленький, просто делаем мап и дублируем ключ. А если что сложнее... Да тоже вариантов много, но все с разными лишними телодвижениями. Иногда даже const_cast норм :)
Да, я понимаю проблему, но мне кажется лучше иметь безопасное решение по-умолчанию. Все-таки foot gun'ы связанные с компаратором сразу вызовут вопросы на ревью и ломают не только set. А здесь еще одно место за которым нужно следить. При этом на ревью изначальной реализации это будет еще можно проконтролировать. А вот при последущей модификации кода пропустить проблему будет легко.