Qual a função da classe Scanner?
Sei que ela pode ser usada para fazer leitura de arquivo e tokenização, mas gostaria de saber sua aplicabilidade em algum caso real.
E qual a diferença de se usar a classe Scanner para leitura de um arquivo ou usar a BufferedReader?
O vantagem da Scanner é o que você já falou. Ela entende tokens.
Assim, você pode ler facilmente arquivos separados por algum separador, como por exemplo:
1,2,3,4,5,6\n
a,b,c,d,e,f\n
maça,pêra,limão,banana,uva,cereja\n.
Com o scanner, basta montar uma expressão regular para detectar o , e o \n e ele já sai achando cada item dos seus registros.
Você pode usar a classe Scanner para ler dados do console, de maneira bem fácil:
Scanner scan = new Scanner(System.in);
int x = scan.nextInt(); //Lê um número inteiro
String r = scan.nextLine(); //Lê uma string até o enter.
Por fim, vale dizer que a sintaxe é mais simples e legível.