Pelo que entendi, nos arquivos .htaccess, a string que o mod_rewrite processa na sua regra é relativa ao diretório no qual o arquivo .htaccess está, então ele não terá um / no início.
Na entrada VirtualHost, a string que ela processa é absoluta para a raiz do servidor e, portanto, inclui o arquivo /.
Isso cria diferenças sutis em como o mod_rewrite funciona.
Aqui está alguém com um problema e uma solução semelhantes:
Isso deve funcionar nos dois casos, supondo que eu me lembre de ter escapado corretamente:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.org$ [NC]
RewriteRule ^\/?(.*?)$ http://example.com/$1 [R=301,L]