I noticed this today and I think it is a bug, as Frotz does the expected behavior.
When a Z-code game uses @read_char and the cursor as at the left edge and the game then prints a newline, that newline seems to get eaten and not add a blank line.
(Sorry I can’t add this issue to Github, that’s a site I can’t use anymore)