Se você armazena um objeto ou array vazio, qual é a diferença? No BSON, arrays e objetos são armazenados da mesma maneira, como um dict . De qualquer forma, à sua pergunta.
Para o driver PHP MongoDB, um array vazio é apenas isso, um array vazio, então ele o armazena como um array. Quando você adiciona um par chave/valor ao array, é assim que o driver entende que deve armazenar um objeto.
Se você realmente deseja armazenar um objeto vazio, tente:
$d = new \stdClass();
$collection->insert(array('z' => $d));