Você não precisa da notação completa, pois o espaço reservado já foi movido para essa posição na matriz.
db.junk.update(
{ "commandes.voyagesSouscrits.idVoyage": "123" },
{$pull: { "commandes.$.voyagesSouscrits": { idVoyage: "123" } }}
)
Esta parte:
idVoyage: { <query> }
só é necessário porque o operador posicional em "commandes.$.voyagesSouscrits " só pode corresponder ao primeiro posição da matriz encontrada na consulta.
http://docs.mongodb.org/manual/reference/operator/projection/positional/
Espero que isso esclareça.