Calling WP_Query with the same args in two different places produces two different results

It turns out it was a plugin that was the culprit. I disabled my installed plugins and then re-enabled them individually to identify a plugin named Search Everything (https://en-ca.wordpress.org/plugins/search-everything/) as the cause.

It seems, Search Everything was modifying the default behaviour of WP_Query.