Faits: A. B._, né en 1955, a travaillé en qualité de magasinier caviste (chef de rayon) au service de X._. Le 11 mars 2009, il a présenté une demande de prestations de l'assurance-invalidité, en indiquant qu'il se trouvait en incapacité totale de travail depuis octobre 2008 en raison de hernies inguinales. SWICA Assurances, en tant qu'assureur perte de gain en cas de maladie, a confié un mandat d'expertise au Centre Y._. Dans son rapport du 11 février 2010, le docteur L._ a évalué la capacité de travail de B._ à 50 % dans son activité de magasinier et à 80 % dans une activité adaptée à son handicap. De son côté, l'Office de l'assurance-invalidité pour le canton de Vaud (l'office AI) a diligenté deux stages d'observation professionnelle, afin d'examiner les aptitudes de l'assuré à la réadaptation professionnelle et ses possibilités de réinsertion sur le marché du travail. Le premier stage s'est déroulé auprès du COPAI de V._, du 26 avril au 21 mai 2010; à l'issue de celui-ci, le docteur M._ a estimé que les rendements fournis par l'assuré se situaient entre 60 et 80 % (rapport du 25 mai 2010), ce que le directeur du COPAI a confirmé (rapport du 28 mai 2010). Le second stage a eu lieu du 10 novembre au 10 décembre 2010 auprès du Centre de formation Z._; les responsables de cet établissement ont admis que l'assuré pouvait occuper un emploi adapté à ses limitations physiques à un taux de 80 %, avec un rendement oscillant entre 60 et 70 % (rapport du 9 décembre 2010). L'office AI a évalué l'invalidité de l'assuré en tenant compte d'une capacité de travail de 80 % dans une activité légère de substitution. Il a fixé le revenu annuel d'invalide à 41'742 fr. en 2009, sur le base des statistiques salariales de l'Enquête suisse sur la structure des salaires. En comparant ce revenu d'invalide au salaire de 56'485 fr. que l'assuré aurait pu prétendre dans son activité habituelle, il est parvenu à un taux d'invalidité de 27 %. Dès lors, par décision du 1 er juillet 2011 qui a fait suite à un projet du 4 mars 2011, l'office AI a refusé de verser une rente d'invalidité. B. B._ a déféré cette décision au Tribunal cantonal du canton de Vaud, Cour des assurances sociales, en concluant principalement à l'octroi d'une demi-rente d'invalidité, subsidiairement au renvoi de la cause à l'office AI pour instruction complémentaire sur la capacité de travail. La juridiction cantonale a ramené la capacité de travail de l'assuré de 80 % à 56 % dans une activité adaptée aux limitations fonctionnelles. Confirmant l'abattement de 15 % sur le salaire statistique que l'office AI avait pris en compte, elle a réduit le salaire d'invalide de 41'742 fr. à 29'149 fr., si bien que la comparaison des revenus a mis en évidence une perte de gain de 48 %. En conséquence, les premiers juges ont admis partiellement le recours et reconnu à l'assuré le droit à un quart de rente d'invalidité à partir du 1 er novembre 2009, par jugement du 7 décembre 2012. 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 1 er juillet 2011. B._ interjette également un recours en matière de droit public contre ce jugement dont il demande la réforme, en concluant principalement à l'octroi d'une demi-rente à compter du 1 er novembre 2009, subsidiairement au renvoi de la cause au tribunal cantonal.