L'errore è praticamente ciò che significa in quanto non è possibile agire su due cose dello stesso "percorso" nella stessa operazione di aggiornamento. I due operatori che stai utilizzando non elaborano in sequenza come potresti pensare.
Puoi farlo con il più "sequenziale" che puoi eventualmente ottenere con l'API delle operazioni "in blocco" o un'altra forma di aggiornamento "in blocco". Entro ragione ovviamente, e anche al contrario:
var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags": 2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });
bulk.execute();
Non è una garanzia che nient'altro tenterà di modificare, ma è il più vicino possibile al momento.
Vedi anche il comando "aggiorna" grezzo con più documenti.