Scanner vs BufferedReader

Qual a vantagem de um e de outro?
Qual é a melhor opção de utilização?

O propósito principal da classe Scanner é dividir uma quantidade grande de dados (source data) em pequenas partes e armazenando estas em variáveis (tokenizing process). A classe possui diversos métodos para você lidar com os tokens obtidos… Dê uma olhada no javadoc.

Reads text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines.
Fonte: http://java.sun.com/javase/6/docs/api/

Mais: http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=33&t=017505