Он использует IEqualityComparer <>, который вы передали конструктору HashSet.Если вы не передали один, то он использует EqualityComparer <>. По умолчанию.Который, если тип элемента не реализует IEquatable <>, использует методы Equals и GetHashCode типа.
Я бы предположил, что ваш список содержит объекты, которые не переопределяют эти методы.Для исправления используйте аргумент конструктора IEqualityComparer.