Faits: A. A.a D._, d'origine étrangère, est arrivée en Suisse en 1998, au bénéfice d'une autorisation de séjour valable pendant cinq ans. Après trois années d'études de droit à l'Université de Y._, elle a obtenu une licence en droit reconnue en Suisse. Après ses études, elle a adressé une demande d'indemnités de chômage à la Caisse de chômage de l'Association des commis de Y._. Celle-ci lui a versé des indemnités journalières du 11 mars 2003 au 29 février 2004, notamment pendant une période d'emploi temporaire subventionné au Bureau des services d'appui aux projets de X._. Lors d'un contrôle effectué en mars 2004, le Secrétariat d'Etat à l'économie (Seco) a mis en évidence que la prénommée ne remplissait pas les conditions relatives à la période de cotisations lorsqu'elle s'était annoncée à l'assurance-chômage. Par décision du 24 juin 2004 et décision sur opposition du 14 septembre 2004, la Caisse de chômage de l'Association des commis de Y._ a exigé de D._ la restitution d'un montant 23'542 fr. 75 correspondant aux prestations versées du 11 mars 2003 au 29 février 2004. D._ a déféré la cause au Tribunal des assurances sociales du canton de Genève, en invoquant le droit à la protection de la bonne foi. Elle a notamment allégué avoir effectué diverses dépenses auxquelles elle aurait renoncé si la caisse lui avait d'emblée refusé les prestations litigieuses; en outre, le paiement de ces prestations avait entraîné une augmentation de sa charge fiscale et de son loyer (pour un logement subventionné); enfin, elle avait accepté un emploi temporaire subventionné au service de X._, dans le cadre de mesures relatives aux marché du travail, ce qui méritait rémunération. Par jugement du 4 janvier 2005, le Tribunal des assurances sociales du canton de Genève a rejeté le recours. En dernière instance, le Tribunal fédéral (à l'époque : Tribunal fédéral des assurances) a annulé ce jugement, ainsi que la décision sur opposition du 14 septembre 2004, et a renvoyé la cause à la Caisse de compensation des commis de Y._ (dont les activités ont été, entre-temps, reprises par la Caisse de compensation Unia; ci-après : la Caisse); il appartiendrait à cette dernière d'entrer en matière sur l'argumentation de D._ relative au droit à la protection de la bonne foi et de statuer à nouveau sur l'obligation de restituer les prestations (arrêt du 3 février 2006 dans la cause C 80/05). A.b La Caisse a procédé à diverses mesures d'instruction et a invité D._ à se déterminer. Par décision sur opposition du 4 avril 2007, elle a maintenu ses prétentions en restitution d'un montant de 23'542 fr. 75. Elle a considéré, en substance, que deux conditions du droit à la protection de la bonne foi faisaient défaut, à savoir un renseignement erroné qui lui aurait été donné par l'autorité et un dommage en résultant pour l'intéressée. B. Cette dernière a saisi le Tribunal des assurances sociales du canton de Genève d'un recours contre cette décision sur opposition. Par jugement du 7 novembre 2007, la juridiction cantonale a partiellement admis le recours et a réformé la décision sur opposition litigieuse en ce sens que la recourante était condamnée à restituer à la Caisse un montant de 21'882 fr. 75. C. D._ interjette un recours en matière de droit public contre ce jugement. Elle en demande l'annulation, ainsi que de la décision sur opposition du 4 avril 2007 et conclut, sous suite de frais et dépens, à ce que soit constatée l'absence de créance de la Caisse en restitution des prestations versées. L'intimée conclut au rejet du recours, alors que le Secrétariat d'Etat à l'économie a renoncé à se déterminer.