When the protected property IsReadOnly is set to true it would be impossible to simply remove the Set method. In other words, a method's visibility can not depend on the value of a property, nor any other factor. The method will always be visible.
Under most cases IsReadOnly is set to false, and the collection can be modified using Set(). However, in a unique case such as this, Microsoft deemed it necessary to disallow modifications to the collection, since that would lead to confusion as to what function those modifications would serve.