Isso ocorre porque o comando netcat ainda nem começou! O shell ao tentar abrir o fifo para entrada irá bloquear. Experimente
strace cat >fifo <fifo
e você não verá nada. Em vez disso, use, por exemplo,
nc -k -l 4458 -v <>fifo >&0
que abre o fifo para ler e escrever como stdin e depois dups para stdout.
Rastrear o comando bash completo mostra que nem a abertura para leitura nem gravação retorna (até que a abertura oposta seja feita):
$ strace -f -e open bash -c 'nc -k -l 4458 -v >fifo <fifo'
...
Process 3631 attached
[pid 3631] open("fifo", O_WRONLY|O_CREAT|O_TRUNC, 0666
$ strace -f -e open bash -c 'nc -k -l 4458 -v <fifo >fifo'
...
Process 3684 attached
[pid 3684] open("fifo", O_RDONLY
man 3 mkfifo: Opening a FIFO for reading normally blocks until some other process opens the same FIFO for writing, and vice versa.