It has to do the function Column() not playing well with column formulas, at last in my experience. Instead you might try `As Column`, like this:
Names default to here(1);
dt = Open("$Sample_data/iris.jmp");
New Column("Z-scoreSepal length", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal()));
New Column("Z-scoreSepal width", Numeric, "Continuous", Format("Best", 12), Formula(Random Normal()));
abs_cols = {:Sepal length, :Sepal width};
For(i=1, i<= N Items(abs_cols), i++,
Eval(
Substitute(
Expr(
New Column(__name2__,
Formula(
If(As Column(__zscore__) < 2, As Column(__abs__))
)
)
),
Expr(__name2__), char(abs_cols[i]),
Expr(__zscore__), "Z-score " || char(abs_cols[i]),
Expr(__abs__), char(abs_cols[i])
)
)
);