Faits: A. H._, née en 1976, a travaillé par intermittence à temps partiel en qualité d'aide-soignante et de veilleuse de nuit dans des homes pour personnes âgées; elle a aussi accompli des travaux de nettoyage et de conciergerie avec son époux. Le 23 septembre 2003, la prénommée s'est annoncée à l'assurance-invalidité, en indiquant qu'elle souffrait de scoliose, d'attaques de panique, d'angoisse et de dépression. L'Office AI Berne a recueilli les avis des docteurs E._, spécialiste en psychiatrie et psychothérapie (rapport établi en février 2005) et S._, spécialiste en médecine interne et en maladies rhumatismales (rapport du 2 juillet 2005). Dans une appréciation interdisciplinaire conjointe (établie en juillet 2005), ces deux médecins ont admis que l'assurée disposait d'une capacité résiduelle de travail de quatre heures par jour dans une activité ne nécessitant pas d'efforts ou de stress trop importants. Procédant à l'évaluation de l'invalidité selon la méthode mixte, l'office AI a fixé la part de l'activité lucrative à 53 % et celle des tâches ménagères à 47 %. La comparaison des revenus (23'729 fr. pour le revenu sans invalidité, 21'505 fr. pour le revenu d'invalide) a laissé apparaître un manque à gagner de 9,4 % imputable au handicap, tandis que l'enquête ménagère a mis en évidence un taux d'empêchement de 28 % dans les travaux ménagers (rapport du 23 décembre 2005). Par décision du 16 janvier 2006, l'office AI a fixé le degré d'invalidité de l'assurée à 18 %, résultant de l'addition des taux de 5,0 % pour l'activité lucrative (53 %) et de 13,2 % pour la tenue du ménage (47 %), et rejeté en conséquence la demande de rente. Par décision du jour suivant, l'administration a accepté de prendre en charge une orientation professionnelle ainsi qu'un soutien aux recherches d'emploi. L'office AI a confirmé son point de vue, par décision sur opposition du 27 juillet 2006. B. H._ a déféré cette décision au Tribunal administratif du canton de Berne en concluant au versement d'une rente. Elle a été déboutée par jugement du 14 août 2008. Entre-temps, le Tribunal fédéral avait confirmé un jugement incident de la juridiction cantonale qui avait rejeté une demande d'assistance judiciaire (arrêt I 900/06 du 12 décembre 2007). C. H._ interjette un recours en matière de droit public contre ce jugement en concluant, avec suite de frais et dépens, à l'octroi d'une rente d'invalidité. L'intimé conclut au rejet du recours, tandis que l'Office fédéral des assurances sociales a renoncé à se déterminer. En cours de procédure, l'abbé R._ a apporté un témoignage spontané en faveur de la recourante (lettres des 6 octobre et 8 décembre 2008).