If stdin isn’t a terminal, lxc launch attempts to read from it to get a container config yaml.
If reading from that ends up blocking, then the command will block.
-t forces a pty allocation which avoids this, normally, forcing stdin to be /dev/null also fixes that though I’m not sure how well ssh replicates this setup.
Does running ssh a.b.c.d lxc launch ... < /dev/null behave any better?