I think the explanation of this issue is the following :
Considering that an Evaluate call is a new calculation, the Let variables ar not transmitted form the main calculation to this second calculation.
So, in you example, precisely in the Evaluate sub calulation, the a variable is unknown.
If i did'nt misunderstood, this behavior is normal.
PS : Excuse me for my bad english.
Fred's explanation makes sense. Apparently, Evaluate does not inherit the context in which it appears. Normally, expressions in a Let statement can reference the Let variables defined in the first part of the statement (which explains why the unquoted "a" in the constructed Let statement works), but when Evaluate executes the constructed statement, it does it with no knowledge of the outer Let context. Thanks for your cogent analysis.