In:
FOO=bar.cpp meld a/$FOO b/$FOO
It's a Simple Command, so `FOO=bar.cpp` isn't executed at the time `$FOO` was expanded.
In:
FOO=bar.cpp && meld a/$FOO b/$FOO
There're 2 commands:
FOO=bar.cpp
and:
meld a/$FOO b/$FOO
When parameter substitution performed in `meld a/$FOO b/$FOO`, `FOO=bar.cpp` was executed, so `FOO` was set to `bar.cpp`.