supongo que es porque, mientras que HashSet implementa ICollection, IsReadOnly no tiene sentido para HashSet. De hecho, si lo refleja, la propiedad siempre devuelve falso. Implementarlo explícitamente oculta este método de la interfaz pública.
Otra razón es porque la interfaz ICollection puede implementarse por razones secundarias (por ejemplo, para admitir la serialización xaml) en lugar de porque es necesaria para el uso principal de la clase. Así que implementarlo explícitamente puede mantener el desorden de la interfaz de la clase.
Ah, sí, eso tiene sentido. HashSet también oculta IsReadOnly por el mismo motivo, supongo, de ahí el error de compilación si intentas usarlo. –
Por cierto, no es necesario implementar ICollection para la serialización xaml; las colecciones deben implementar IDictionary o IList. Fue solo un ejemplo de ocasiones en las que podría necesitar implementar una interfaz por motivos incidentales. – Will