EDITAR: Mi respuesta original a continuación. El siguiente no es relevante en este caso, ya que el lector de memoria intermedia está envolviendo un StringReader, que envuelve un String. Por lo tanto, no se debe realizar el almacenamiento en búfer, y el BufferedReader parece ser redundante. Usted podría presentar un argumento para usar las mejores prácticas/consistentes, pero sería bastante tenue.
Posiblemente el resultado de un copiar/pegar, o tal vez una refactor IDE impulsada demasiado!
BufferedReader intentará leer de una manera más óptima.
Es decir, se leerá trozos grandes de datos de una sola vez (en una cantidad configurable), y luego poner a disposición cuando sea necesario. Esto reducirá el número de lecturas del disco (etc.) a expensas de un poco de uso de la memoria.
citar el Javadoc:
En general, cada solicitud de lectura hecha de un lector provoca una correspondiente solicitud lea estar hecha de la corriente carácter o byte subyacente. Es tanto, es recomendable envolver un BufferedReader en torno a cualquier lector cuya lectura() las operaciones pueden ser costosos, tales como FileReaders y InputStreamReaders
Utilizando el BufferedReader en realidad ser marginalmente más lenta (y hacer el código más complicado) –