There's probably a solution to this, but it could be a lot of work for a small benefit.
If emacsclient --eval could pass in the stdin/stdout/stderr from the terminal to the daemon, then things would work as I expect. But the work-around is easy: emacsclient -c -e '...'
However, I noticed that stderr appears to be available, when there's an error:
$ emacsclient --eval '(man fprintf)'
*ERROR*: Symbol’s value as variable is void: fprintf
and also when it works properly:
$ emacsclient --eval "(list-buffers)"
#<window 194 on *Buffer List*>