Você pode pré-processar seu arquivo para inserir um caractere especial para as strings que deseja colocar na lista de permissões para impedir sua substituição.
Como você mudaria:
<user1></user1>
<password2></password2>
Para
<user1></user1>
<|password2><|/password2>
primeiro e use s/\(<[^|0-9>]*\)[0-9]*\([^0-9]*>\)//g para a substituição. Se | já pode ocorrer na entrada, você pode escapar usando um esquema como: _ - > _u , | - > _p que você poderia desfazer depois.
sed '
s/_/_u/g;s/|/_p/g
s:<\(/\{0,1\}password2>\):<|:g
s:<\(/\{0,1\}othertag>\):<|:g
s/\(<[^|0-9>]*\)[0-9]*\([^0-9]*>\)//g
s/|//g;s/_p/|/g;s/_u/_/g'