I suspect this should call createExprAttribute(), although it probably doesn't make any difference.

The difference is that createAttribute() (no_attr) doesn't ever transform its argument within a transformation (e.g., is used in one place to keep track of the original ecl).  createExprAttribute() (no_attr_expr) does transform its argument.