>Because you have an alternative - evaluate() in this case.
Mainly, I would still use macro substitution when there is no other choice - or to evaluate an SQL statement with a variable expression. The reason is that in the SQL statement, the macro gets evaluated once. An evaluate() must be evaluated for each record - this may cause a huge speed difference.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)