SameValueZero / идентичность ссылок
Для объектов сравнение идёт по identity (ссылке), не по deep equality. Два литерала с одинаковыми полями — разные записи.
const set = new Set();
const obj1 = { a: 1 };
const obj2 = { a: 1 };
set.add(obj1);
set.add(obj2);
console.log(set.size);
Нюанс: NaN в Set/Map считается равным самому себе (удобнее, чем ===).
Итог: структурно одинаковые объекты ≠ один ключ; нужна одна и та же ссылка (или свой ключ/сериализация).