Supponiamo di avere 10.000 clienti, di questi (immagino) 9.900 inizieranno con A,B,C e così via.
Solo pochi (suppongo) inizieranno con 1, 2 e così via.
Se hai un indice su ragione_sociale, e cerchi tutti i clienti il cui nome inizia per 1, per 2, per 3... avrai 100 risultati (nell'esempio).
Inoltre mysql invece di esaminare tutti i 10.000 clienti, "magicamente" troverà i 100 perchè è in grado (almeno questo vedo dall'EXPLAIN della query) di trovare direttamente quelli che iniziano per 1, 2 e poi unirli (con l'OR).
Chiaramente però ti toccherebbe mettere tutti i caratteri, anche quelli speciali (tipo !, $, & e così via).
Con la prima soluzione, che funziona "al contrario" (cioè prende tutti quelli che NON cominciano con una lettera) sei sicuro di visualizzare correttamente tutti i record, al costo però di esaminare tutti i 10.000 clienti (o almeno credo, magari qualcun altro può darti come fare meglio)