E secondo me è un errore, principalmente per tre motivi:
1) Se l'applicazione che genera i token ha delle falle, queste possono essere sfruttate per trovare l'algoritmo di generazione dei codici.
2) Se lo smartphone è infettato da un malware (i.e spyware e affini) è possibile intercettare il codice OTP
3) Nel caso in cui si smarrisca lo smartphone, è possibile che i malintenzionati riescano comunque a recuperare il codice dall'app (i.e lo smartphone non utilizza alcun blocco schermo per l'accesso).
Una chiavetta fisica, invece, rimane sempre lì, a casa tua...nessuno la può "hackerare" a distanza ed è difficile smarrirla poichè non è qualcosa che ti porti sempre dietro come il cellulare.