Я предполагаю, потому что, хотя HashSet реализует ICollection, IsReadOnly не имеет смысла для HashSet. Фактически, если вы его отражаете, свойство всегда возвращает false. Реализация этого явно скрывает этот метод от открытого интерфейса.
Другая причина заключается в том, что интерфейс ICollection может быть реализован из-за непредвиденных причин (например, для поддержки сериализации xaml), а не потому, что он необходим для первичного использования класса. Таким образом, его реализация явно может помешать помещению из интерфейса класса.
Ответ 2
В основном есть две причины, по которым вы прибегаете к явной реализации интерфейса (источник: MSDN):
Вы реализуете несколько интерфейсов с элементами, содержащими одни и те же сигнатуры, и вы хотите, чтобы эти члены вели себя по-другому.
Элемент интерфейса не представляет особого интереса к классу, но необходим для ссылки на объекты по интерфейсу.
Для HashSet<T> применяется последний случай, поскольку хеш-набор никогда не читается, и IsReadOnly всегда будет возвращать false.