Porque :w e :wq são dois comandos diferentes com opções diferentes.
Aqui está a descrição do comando :w com a opção !{cmd} :
:[range]w[rite] [++opt] !{cmd}
Execute {cmd} with [range] lines as standard input
(note the space in front of the '!'). {cmd} is
executed like with ":!{cmd}", any '!' is replaced with
the previous command |:!|.
Observe que :w! e :w !{cmd} são duas coisas completamente diferentes; no primeiro, o ponto de exclamação significa "forçar gravação", no segundo é uma espécie de sinal de pipe para passar todo o intervalo de texto para o comando subseqüente (no seu caso, para tee executar como superusuário, que retorna o arquivo para vi e salva-o no nome do arquivo representado pelo curinga % ).
Infelizmente, não existe essa opção para o comando :wq . As únicas outras formas disponíveis deste comando são :wq! (aqui o ponto de exclamação não é para canalizar para outro comando, mas para force quit, muito parecido com :w! ) e :w[!] {file} .