Fatti: A. Con decisione 14 agosto 1996 l'Ufficio AI del Cantone Ticino (UAI) ha posto O._ - nato nel 1952, già attivo professionalmente dal 1971 al 1992 - al beneficio di una mezza rendita d'invalidità (per un grado d'invalidità del 50%) con effetto dal 1° agosto 1993 per un danno alla colonna vertebrale, alla spalla sinistra e alla gamba destra. L'interessato dal giugno 1996 lavora per la ditta E._ SA quale autista con una capacità lavorativa ridotta al 50% per diminuzione del rendimento. La mezza rendita è stata successivamente confermata con comunicazioni 3 aprile 2000, 28 luglio 2004 e 10 settembre 2007. Al termine di una nuova procedura di revisione avviata nel 2010 - dopo aver esperito gli accertamenti medici che hanno oggettivato uno stato di salute invariato rispetto alla prima assegnazione di rendita - l'UAI ha rilevato che dal lato economico era subentrato un aumento salariale notevole. Accertato un grado d'invalidità del 40%, l'amministrazione ha ridotto da metà a un quarto la rendita d'invalidità (decisione del 6 gennaio 2012, preavvisata il 13 settembre 2011). B. L'assicurato si è aggravato al Tribunale delle assicurazioni del Cantone Ticino, il quale per pronuncia del 23 luglio 2012 ha accolto il gravame e ripristinato il diritto a una mezza rendita d'invalidità. Accertato per il 2011 un reddito da invalido di fr. 39'000.- (fr. 3'000.- x 13) e un reddito da valido di fr. 83'291.-, la Corte cantonale ha stabilito un tasso d'invalidità del 53%. C. L'UAI ha presentato ricorso in materia di diritto pubblico al Tribunale federale, al quale, previa concessione dell'effetto sospensivo, chiede in via principale l'annullamento del giudizio cantonale e il rinvio degli atti all'autorità giudiziaria cantonale per complemento istruttorio, mentre in via subordinata postula l'annullamento di detto giudizio e la conferma della decisione 6 gennaio 2012. Dei motivi si dirà, per quanto occorra, nei considerandi. O._ propone la reiezione del gravame, mentre l'Ufficio federale delle assicurazioni sociali ha rinunciato a determinarsi.