Свойства должны стремиться быть свободными от побочных эффектов.
Если побочный эффект невидим для потребителей класса (ленивое создание строки, которая затем не изменяется), то это гораздо меньше проблем.
По умолчанию отладчики склонны отображать (таким образом оценивать) свойства. Если они имеют побочные эффекты, это может вызвать значительное горе.
Бросок из установщика, если предоставленное значение является недопустимым, обычно нормально. Бросок из геттера, как правило, считается плохим.
Это, как всегда, практические правила, и обстоятельства могут диктовать, что они не соблюдаются. Хорошим примером являются свойства типов, сгенерированных через Linq to SQL. Если у вас ленивый поиск дочерних свойств, тогда его оценка действительно вызывает чтение из базы данных. Это компенсируется, но простота использования, удобочитаемость и согласованность получаемых объектов - это одна из тех вещей, которые уравновешивают конкурирующие правила.
Остерегайтесь правил, которые ДОЛЖНЫ или НИКОГДА. Иногда такие правила существуют и являются разумными, но на самом деле они необычны.