O erro é praticamente o que significa, pois você não pode agir em duas coisas do mesmo "caminho" na mesma operação de atualização. Os dois operadores que você está usando não são processados sequencialmente como você imagina.
Você pode fazer isso com o mais "sequencial" possível com a API de operações "em massa" ou outra forma de atualização "em massa". Dentro da razão, claro, e também no sentido inverso:
var bulk = db.coll.initializeOrderedBulkOp();
bulk.find({ "tags": 1 }).updateOne({ "$addToSet": { "tags": 2 } });
bulk.find({ "tags": 1 }).updateOne({ "$pull": { "tags": 1 } });
bulk.execute();
Não é uma garantia de que nada mais tentará modificar, mas é o mais próximo que você obterá atualmente.
Veja também o comando raw "update" com vários documentos.