Faits: A. A._, ressortissant ghanéen né en 1976, se trouve en détention préventive depuis le 26 janvier 2010, sous l'inculpation d'infraction grave à la LStup. Il lui est reproché d'avoir participé à un trafic de cocaïne entre l'Equateur et la Suisse, en réceptionnant et en accompagnant des transporteurs lituaniens. Par ordonnance du 5 octobre 2010, la Chambre d'accusation genevoise a rejeté une demande de mise en liberté sous caution. L'exécution de commissions rogatoires à l'étranger avait amené des éléments nouveaux sur lesquels l'inculpé devrait être interrogé. L'aggravation des charges augmentait le risque de fuite. B. Le 3 décembre 2010, A._ a formé une nouvelle demande de mise en liberté, proposant le versement d'une caution de 20'000 fr. Par ordonnance du même jour, la Chambre d'accusation a refusé la mise en liberté, considérant que l'instruction, achevée, avait démontré l'extrême gravité des faits, et que le jugement pourrait avoir lieu dans les prochains mois. Sur le vu de la peine encourue, le montant de 20'000 fr. apparaissait comme dérisoire. C. Par acte du 23 décembre 2010, A._ forme un recours en matière pénale par lequel il demande l'annulation de la décision cantonale et sa mise en liberté provisoire sous caution de 20'000 fr. Il demande l'assistance judiciaire. La Chambre d'accusation - devenue au 1er janvier 2011 la Chambre pénale de recours - se réfère aux considérants de sa décision. Le Ministère public conclut au rejet du recours. Le recourant a renoncé à répliquer.