Faits: A. Le 26 octobre 2008, A._ a été arrêté et placé en détention préventive dans le cadre d'une enquête ouverte contre lui pour vol (art. 139 CP) et infractions à l'art. 19a de la loi fédérale du 3 octobre 1951 sur les stupéfiants et les substances psychotropes (LStup; RS 812.121) et à l'art. 115 de la loi fédérale du 16 décembre 2005 sur les étrangers (LEtr; RS 142.20). Il lui est reproché d'avoir volé le portefeuille de B._ le 26 octobre 2008, en s'effondrant sur celui-ci à la sortie d'un bar tout en faisant mine d'être ivre. A._ aurait ensuite pris la fuite, avant d'être rattrapé par un tiers qui a réussi à récupérer les 100 fr. que le prénommé aurait dérobés. Le portefeuille a également été restitué à son propriétaire. Le 29 octobre 2008, B._ a été entendu à titre de renseignements et il a signé à cette occasion un document établi par la police du canton de Genève et intitulé "déclaration-plainte", dans lequel il exposait le déroulement du vol, tout en précisant qu'il n'était pas en mesure de donner un signalement du voleur. Sur la base d'une planche photographique et d'une reconnaissance au moyen d'un miroir sans tain, les témoins C._, D._ et E._ ont identifié A._ comme étant l'auteur du vol en question. Lors de son interpellation, le prénommé était en possession d'un morceau de haschich de 2,4 g et il était sous le coup d'une décision d'interdiction d'entrée en Suisse valablement notifiée. L'intéressé conteste le vol mais reconnaît ces deux dernières infractions. Entendu le 26 octobre 2008 par le juge d'instruction du canton de Genève, A._ a été inculpé de vol ainsi que d'infractions à l'art. 19a LStup et à l'art. 115 LEtr. Deux condamnations figurent au casier judiciaire de l'intéressé. Il a été condamné le 15 septembre 2006 à deux mois d'emprisonnement avec sursis pendant deux ans pour vol (art. 139 ch. 1 CP), opposition aux actes de l'autorité (art. 286 CP) et infraction à l'art. 19 ch. 1 LStup. Le 8 février 2008, il a été sanctionné d'une peine privative de liberté de 20 jours pour vol au sens de l'art. 139 ch. 1 CP. B. Par ordonnance du 31 octobre 2008, la Chambre d'accusation du canton de Genève a prolongé la détention pour deux mois, sur requête du juge d'instruction. Le 27 novembre 2008, le Procureur général du canton de Genève a requis le Tribunal de police de citer A._ comme prévenu des infractions susmentionnées. Le 1er décembre 2008, A._ a présenté une demande de mise en liberté, que la Chambre d'accusation a rejetée par ordonnance du 3 décembre 2008. En substance, cette autorité a considéré que les charges pesant sur l'intéressé étaient suffisantes et que le maintien en détention préventive était motivé par des risques de fuite et de récidive. Elle estimait également que la proportionnalité était encore respectée, l'inculpé devant être prochainement convoqué devant le Tribunal de police. Cette convocation est intervenue le même jour, pour une audience de jugement prévue le 20 janvier 2009. C. Agissant par la voie du recours en matière pénale, A._ demande au Tribunal fédéral d'annuler l'ordonnance du 3 décembre 2008 et d'ordonner sa mise en liberté immédiate. 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. En réponse à ces déterminations, le recourant a présenté des observations complémentaires.