Вы правы, проверка должна быть выполнена, а их пример неверен.
Ниже приведен стандартный код.
private void NotifyPropertyChanged(String propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler (this, new PropertyChangedEventArgs(propertyName));
}
}
Редактировать: Дальнейшее объяснение того, почему это нужно (и почему это работает)
В примере с MS они проверяют NULL прямо на PropertyChanged и затем вызывают его. Таким образом, PropertyChanged мог бы стать пустым между проверкой нуля и вызовом. Присвоив делегат локальной переменной, мы можем гарантировать, что мы сохраним ссылку на делегат, и она не сможет переключаться между проверкой на ноль и вызовом.