Faits : A. Par décision du 1 er octobre 2008, l'Office cantonal de l'assurance-invalidité du canton de Genève (l'office AI) a alloué à A._ une rente d'invalidité fondée sur un degré d'invalidité de 49 % à compter du 1 er septembre 1999. Dans le cadre d'une révision du droit à cette prestation, ouverte en juillet 2010, l'office AI a recueilli l'avis du docteur B._, spécialiste en rhumatologie et en médecine interne. Ce médecin a attesté que l'activité de maçon n'était théoriquement plus exigible. Il a précisé qu'une capacité totale de travail demeurait exigible dans une activité adaptée, soit un travail évitant le port de charges de plus de 15kg notamment en position de porte-à-faux, la nécessité d'alterner les positions assise et debout toutes les 30 minutes, l'absence d'activité au-dessus de l'horizontale avec les membres supérieurs, l'absence d'activité lors des mouvements de flexion-extension de la nuque (rapport d'expertise rhumatologique du 12 janvier 2012). L'office AI a fixé le revenu sans invalidité à 78'325 francs; quant au gain d'invalide, il l'a arrêté à 53'011 fr. sur la base des statistiques de l'Enquête suisse sur la structure des salaires, après application d'une réduction de 15 % sur le salaire statistique. Le taux d'invalidité s'étant ainsi élevé à 32 % (cf. feuille de calcul du 8 octobre 2013), l'office AI a supprimé la rente par décision du 28 février 2014. B. A._ a déféré cette décision à la Cour de justice de la République et canton de Genève, Chambre des assurances sociales, en concluant à son annulation et au paiement d'une demi-rente d'invalidité. A la demande du tribunal, le docteur B._ a complété son rapport (cf. écriture du 18 septembre 2014). Par jugement du 3 novembre 2014, la juridiction cantonale a porté l'abattement sur le salaire statistique de 15 % à 25 %, réduisant ainsi le revenu d'invalide à 46'775 fr. Compte tenu du taux d'invalidité de 40 % qui découlait de la comparaison des revenus (46'775 / 78'325), elle a reconnu à l'assuré le droit à un quart de rente, admis le recours et annulé la décision du 28 février 2014. C. L'office AI interjette un recours en matière de droit public contre ce jugement dont il demande l'annulation en concluant à la confirmation de sa décision du 28 février 2014. L'intimé n'a pas répondu, tandis que l'Office fédéral des assurances sociales a renoncé à se déterminer.