Согласно Reflector;) INotifyPropertyChanging используется в Linq to SQL и его сторонних аналогах (например, Devart.Data.Linq) для оптимизации отслеживания изменений объекта (задержка моментального снимка объекта до первого изменения).
По сути, если вы загружаете X объектов, владелец DataContext создаст X копий этих объектов (снимков), если они не реализуют INotifyPropertyChanging.
С реализованным INotifyPropertyChanging будут созданы только X PropertyChangingEventHandlers. Но как только происходит первое изменение, DataContext начинает клонировать.
Таким образом, реализация INotifyPropertyChanging имеет смысл только тогда, когда ваши классы являются объектами данных в DataContext (Linq to Sql), загруженными в больших количествах и в основном для операции чтения.
Я также хотел бы видеть дополнительную поддержку INotifyPropertyChanging в вашем проекте Weaver;)