Thanks for your bug report. This behaviour does actually look right. What is happening is this:
In the non-regex call, the final command is /noop combined with the results of $read(). $read() is not returning an error (and never has for long strings). This combination exceeds the maximum line length allowed for a command. So an error is reported.
In the regex call, /noop is combined with nothing. The $read() is evaluated into a single parameter of maximum line length. This is passed directly to $regex() with // which results in an empty string. So the entire final command is just /noop.