"open -t" vs. "open -ef"
The pipe (|) connect the standard output of a program to the standard input of another program. open does not read from stdinby default but from a file given as argument. It needs the -foption to read from the standard input.

That's why your first example work but not your second one. 

syslog | tail | open -tf works well.