diff $<(foo) $<(bar)
To support process substitution, we need to open FDs during the four expansions in a manner like opening redirections. It would be a relatively broad change in the expansion algorithm.
We also need to close the FDs after the command finished. It is still unclear how and when they are closed if process substitution is performed outside the argument expansion of a simple command (e.g. in an assignment word or in a here-document or in a case pattern).