Is there a case of ... or context where cat file | ... behaves differently than ... ?
...
cat file | ...
... ?
Pipes cause a subshell to be invoked for the command on the right. This interferes with environment variables.
cat foo | while read line do ... done echo "$line"
versus
while read line do ... done < foo echo "$line"