Faits: A. Le 6 mai 2006, A._, ressortissant jamaïcain résidant en Suisse, a été arrêté à la gare de Zurich alors qu'il attendait une personne transportant environ 1 kg de cocaïne. Il a été placé en détention préventive. Le 8 mai 2006, le Juge d'instruction genevois en charge de la procédure l'a inculpé de "trafic de stupéfiant" au sens de l'art. 19 ch. 2 de la loi fédérale sur les stupéfiants (LStup; RS 812.121). La Chambre d'accusation du canton de Genève (ci-après: la Chambre d'accusation) a prolongé sa détention par ordonnances des 12 mai et 8 août 2006, pour les besoins de l'instruction et en raison des risques de fuite, de collusion et de réitération. A._ a présenté des requêtes de mise en liberté provisoire, qui ont été rejetées par la Chambre d'accusation. Par arrêt du 2 février 2007 (1P.29/2007), la Cour de céans a confirmé l'un de ces rejets, considérant que le maintien en détention était justifié en raison d'un risque de fuite concret. B. Par arrêt du 27 septembre 2007, la Cour correctionnelle sans jury du canton de Genève (ci-après: la Cour correctionnelle) a condamné A._ à sept ans de peine privative de liberté pour infractions à l'art. 19 ch. 1 et 2 let. a et b LStup. L'intéressé a contesté ce jugement devant la Cour de cassation du canton de Genève (ci-après: la Cour de cassation), qui a rejeté son pourvoi par arrêt du 7 mars 2008. La Cour de droit pénal du Tribunal fédéral a admis le recours déposé contre cet arrêt par A._ et renvoyé la cause à la Cour de cassation pour nouveau jugement (arrêt 6B_317/2008 du 2 juillet 2008). Statuant à nouveau par arrêt du 13 janvier 2009, la Cour de cassation a annulé l'arrêt de la Cour correctionnelle du 27 septembre 2007. Elle a acquitté A._ de trois chefs d'accusation et confirmé le verdict concernant le quatrième chef d'accusation ainsi que la circonstance aggravante de la quantité de stupéfiants pouvant mettre en danger la santé de nombreuses personnes. La cause a été renvoyée à la Cour correctionnelle pour nouvelle décision. C. Par ordonnances des 20 et 23 janvier 2009, la Chambre d'accusation a rejeté de nouvelles requêtes de mise en liberté de A._. Par arrêt du 16 février 2009, la Cour de céans a admis un recours du prénommé contre l'ordonnance du 23 janvier 2009, pour violation de l'art. 29 al. 2 Cst. En omettant de prendre en compte des circonstances nouvelles - acquittement pour trois chefs d'accusation sur quatre et longue détention préventive déjà subie - pour examiner les motifs de maintien en détention, la Chambre d'accusation avait failli à son devoir de motivation (arrêt 1B_22/2009 du 16 février 2009). Statuant à nouveau, la Chambre d'accusation a rejeté la requête de mise en liberté de A._ par ordonnance du 3 mars 2009. Elle a considéré en substance que les risques de fuite et de récidive restaient concrets et que le principe de la proportionnalité était encore respecté. D. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler l'ordonnance du 23 janvier 2009 et d'ordonner sa mise en liberté immédiate, subsidiairement de renvoyer la cause à l'autorité cantonale pour nouvelle décision. Il requiert en outre l'assistance judiciaire. La Chambre d'accusation se réfère à sa décision. Le Procureur général du canton de Genève s'est déterminé; il conclut au rejet du recours. Il produit également une convocation de la Cour correctionnelle pour l'audience de jugement fixée au 26 mars 2009. En réponse à ces déterminations, le recourant a présenté des observations complémentaires.