Che tu memorizzi un oggetto o un array vuoto, qual è la differenza? In BSON, array e oggetti vengono archiviati allo stesso modo, come un dict . Comunque, alla tua domanda.
Per il driver PHP MongoDB un array vuoto è proprio questo, un array vuoto, quindi lo memorizza come un array. Quando aggiungi una coppia chiave/valore all'array, è così che il driver capisce che dovrebbe memorizzare un oggetto.
Se vuoi davvero memorizzare un oggetto vuoto, prova :
$d = new \stdClass();
$collection->insert(array('z' => $d));