sshd gets the stdout of the remote shell (and children like
sleep) and stderr via two pipes (and also sends the client's input via another pipe).
sshd does wait for the process in which it has started the user's login shell, but also, after that process has terminated waits for eof on the stdout pipe (not the stderr pipe in the case of openssh at least).
And eof happens when there's no file descriptor by any process open on the writing end of the pipe, which typically only happens when all the processes that didn't have their stdout redirected to something else are gone.
When you use
sshd doesn't use pipes. Instead, all the interaction (stdin, stdout, stderr) with the remote shell and its children are done using one pseudo-terminal pair.
With a pseudo-terminal pair, for
sshd interacting with the master side, there's no similar eof handling or any way to know if there are still processes with fds open to the slave side of the pseudo-terminal, so it just waits for the termination of the process in which it executed the login shell of the remote user and then exits.
Upon that exit, the master side of the pty pair is closed which means the pty is destroyed, so processes controlled by the slave will receive a SIGHUP (which by default would terminate them).