Ctrl+Z doesn't work in Portage 2.2_pre*. It works correctly in 2.1.*.
It seems to happen since r6747.
I've been experimenting in that area and it needs some work. My plan is for portage to have a built-in job control framework. Some of the concepts are described in section 27.6 of the glibc manual: http://www.gnu.org/software/libc/manual/html_node/Implementing-a-Shell.html The goal is to be able to have parallel jobs running in separate sessions similar to those created by dtach (see http://dtach.sourceforge.net/). Input and output from parallel jobs will be kept separate by having each session do all of it's input and output through it's own pty. None of the parallel support needs to be implemented in order to solve the Ctrl+Z issue reported in this bug. All that's needed is just enough code to control a single job.
In svn r7394 I've simplified the code by passing stdin directly to spawned processes even when their output goes through a pty.
Thanks.