Although "\;" behavior is not documented, I would have expected both results to be shown one after the other, or having a an error, but not a quiet discard.
See the documentation for PQexec(): all but the last query result is discarded.
Sure. That is developer-level answer to "why", although it does not really say why the developer chose PQexex over PQsendQuery. At the user-level the behavior is still pretty surprising.
Lets try putting it this way...
As a psql user I want some way to choose whether I send my query via "PQexec" or "PQsendQuery". I'm not sure why the "PQexec" access point is undocumented but this "\;" syntax, vis-a-vis ";" provides me that choice.