Вот мысль:
Делегаты имитируют класс делегирования (по крайней мере, так как я их использовал, не уверен, что это канонический способ или нет, но так я обычно делаю). Таким образом, в основном, если у меня есть класс с несколькими точками входа (методами), и я хочу изменить реализацию во время выполнения, я бы создал делегаты для реализации того же интерфейса.
Если бы, с другой стороны, у меня была одна часть класса, которую я хочу иметь возможность обмениваться во время выполнения, я бы создал классы Стратегии с одним интерфейсом метода (например, executeCalculation) и сделал бы его агрегатным компонентом содержащий класс.
Таким образом, в итоге, стратегия включает в себя единое поведение, делегаты реализуют набор поведений, и вы можете использовать делегатов для реализации стратегий.