Dash does not support process overriding ( <()).
The behavior you see is consistent if you use syntax that is supported by each of the shells you are comparing. Try the following:
echo hello | cat < inputfile
You should see the contents of the "inputfile", not the "hello". Of the few shells I tried, only the Z-shell showed both.
This is what POSIX says about pipelines and redirects:
1 2. , , , (. ).
, stdin cat, .