A documentação diz "Atualmente, o valor de retorno de uma função de redução não pode ser uma matriz (normalmente é um objeto ou um número)."
Então, crie um objeto e envolva seu array nele. Certifique-se também de que a saída de reduce seja igual ao tipo de entrada, portanto, você precisará emitir um valor semelhante na operação de mapa.
MAS ... por que usar o Map-Reduce para fazer isso? Se você emitir o valor _id, não há nada para reduzir, pois cada chave será única. Por que não apenas iterar sobre a coleção copiando os valores e atualizando cada registro um por um?