Only lambda expression without method body can be converted to expression tree
Following constructs do compile:
Func<int> exp1 = () => 1;
Func<int> exp2 = () => { return 1; };
Func<int> exp3 = delegate { return 1; };
Expression<Func<int>> exp4 = () => 1;
And following do not
Expression<Func<int>> exp5 = delegate { return 1; }; //no anonymous delegates
Expression<Func<int>> exp6 = () => { return 1; }; //or lambdas with block body
So there is difference even on not very advanced level ( that Jon Skeet points out here sick difference example )
Another difference is that you can create anonymous delegates without parameter list if you don't plan to use them inside method body, with lambda you always have to provide parameters.
Following two lines demonstrate the difference
Func<int, int, int, int, int> anonymous = delegate { return 1; };
Func<int, int, int, int, int> lambda = (param1, param2, param3, param4) => 1;
You do essentially the same thing but anonymous delegate clearly looks better here.