No necesita la notación completa ya que el marcador de posición ya se ha movido a esa posición en la matriz.
db.junk.update(
{ "commandes.voyagesSouscrits.idVoyage": "123" },
{$pull: { "commandes.$.voyagesSouscrits": { idVoyage: "123" } }}
)
Esta parte:
idVoyage: { <query> }
solo se necesita porque el operador posicional en "commandes.$.voyagesSouscrits " solo puede coincidir con el primero posición de matriz encontrada en la consulta.
http://docs.mongodb.org/manual/reference/operator/projection/positional/
Espero que eso lo aclare.