O response.sendRedirect manda um header HTTP para que o NAVEGADOR mande uma nova requisição para o servidor, requisitando o novo recurso. Neste caso a URL na barra de endereços se altera.
Já usando o RequestDispatcher a requisição é “enviada” no Server-Side para outro componente da WebApp, que então a tratará. Do ponto de vista do navegador, a segunda abordagem é feita em apenas uma requisição, por isso a URL não muda na barra de endereços.
Espero que eu tenha conseguido explicar apropriadamente… =)