Свойства зависимостей аналогичны обычным свойствам, за исключением того, что они имеют некоторые специальные «зацепки», которые использует WPF.
Одна особенность заключается в том, что иногда, если вы не установите значение свойства, оно получит свое значение от элемента управления, в котором оно размещено (поэтому, если вы установите шрифт для кнопки, текстовый блок внутри кнопки будет использовать этот шрифт если вы не указали другой шрифт для текстового блока), я предполагаю, что это источник всей ерунды "никогда не знаешь значения".
Если вы пишете элемент управления WPF, вам, вероятно, следует использовать свойства зависимостей, поскольку вы можете указать, должны ли изменения автоматически вызывать повторную визуализацию элемента управления (и более), и можете ли вы использовать их для привязки данных.
Если вы пишете класс, производный от Freezable (прямо или косвенно), используя только свойства зависимостей, вы сэкономите некоторую работу.
Если вы пишете класс, не относящийся к WPF, то, вероятно, нет причин использовать свойства зависимости.