Não é possível atribuir um delegado de um tipo para outro, mesmo que a assinatura corresponda
Minha curiosidade mórbida me faz pensar por que o seguinte falha:
// declared somewhere
public delegate int BinaryOperation(int a, int b);
// ... in a method body
Func<int, int, int> addThem = (x, y) => x + y;
BinaryOperation b1 = addThem; // doesn't compile, and casting doesn't compile
BinaryOperation b2 = (x, y) => x + y; // compiles!