EFQ propertyCondition Doesn't work in Simpletest
It turns out that the status of my node was, in fact, being set to '1' immediately prior to this query running, but that despite the fact that the node_save() that was called immediately after node_publish_action() should have cleared the cache, node_load() was in fact calling a cached version of the node.

I got around this by adding the TRUE parameter to node_load().

NOTE: You can't skip the middle parameter, á la node_load($nid, TRUE). This is annoying, because it will fail silently and it will just return a boolean FALSE. To get a node without caching, and also without specifying a VID, you must use node_load($nid, NULL, TRUE).

In a simpletest, you can also use a TRUE parameter like so:  drupalWebTestCase::drupalGetNodeByTitle($nid, TRUE).