Possibly the -t test is blocking until the terminal is ready. That
would synchronize the shell with the parent urxvt, which would also
explain this:
} Strangely enough, not only I don't get the error anymore, but the
} terminal title also seem to be always correctly set on startup
On the other hand I'd have expected zsh's internals to do the equivalent
of -t at some point during initialization, to decide whether the shell
is interactive in the first place, so maybe introducing a tiny delay
before the print is enough to break the race condition.