The problem is that `||` does not evaluate its first argument, so it concatenates "\n" with the unevaluated function call to `Repeat` rather than with its result.
Since you didn't supply the definition of `Repeat` I'll make one up in order to illustrate the point.
Repeat:=proc(s,n)
local i;
cat(seq(s,i=1..n));
end proc:
lprint( cat(Repeat("%+12.5e*e^(I*%+12.5e) ",2),"\n") );
"%+12.5e*e^(I*%+12.5e) %+12.5e*e^(I*%+12.5e) \n"
lprint( Repeat("%+12.5e*e^(I*%+12.5e) ",2)||"\n" );
Repeat("%+12.5e*e^(I*%+12.5e) ", 2) || "\n"
So in the second case `printf` is not receiving an actual string as its first argument.
As a general rule it's unwise to use `||` instead of `cat` unless one understands its evaluation rules.
Similarly it's unwise to use `$` unless one understands the difference between its evaluation rules and that of `seq`.