Try explicitly converting at least one of your variables to a number using CDbl in the ExecuteStatement ...
MyScriptControl.ExecuteStatement("endresult = CDbl(a) + CDbl(b)")
This occurs with Eval and ExecuteStatement because they are working on strings and the plus sign has an ambiguous meaning in VB. It can either be a math or string operator. Because the statement being evaluated isa string, by necessity , the two variables' contents are being typecast to strings, even though you have taken the trouble to define them as double percision, real numbers.