Установка поля не вызовет уведомлений об изменении свойств, поэтому причина не в этом.
Я бы предположил, что этот выбор дизайна был обусловлен чем-то вроде следующего:
Эта строка является неизменным ссылочным типом. Поэтому оригинальные и новые экземпляры являются взаимозаменяемыми. Однако первоначальный экземпляр, возможно, был дольше и поэтому в среднем собирать его может быть немного дороже (*). Поэтому производительность может быть лучше, если исходный экземпляр сохраняется, а не заменяется новым идентичным экземпляром.
(*) Новое значение в большинстве случаев было только назначено и не будет повторно использовано после установки свойства. Таким образом, очень часто объект Gen0 эффективно собирать, тогда как генерация GC исходного значения неизвестна.
Если эти рассуждения верны, я не ожидаю увидеть тот же шаблон для свойств типа значения (int, double, DateTime, ...).
Но, конечно, это всего лишь предположение, и я могу ошибаться.