Faits: A. P._ a travaillé comme chef de rayon au service de la Société X._, dont les employés étaient assurés au titre de la prévoyance professionnelle auprès de la Caisse de pensions X._ (ci-après: la caisse de pensions). En arrêt de travail en raison de problèmes de santé depuis janvier 1998, il s'est annoncé à l'assurance-invalidité. Par la suite, il a été mis au bénéfice d'une rente entière d'invalidité du 1er janvier 1999 au 30 juin 2000, puis d'une demi-rente (fondée sur un taux d'invalidité de 50 %) à partir du 1er juillet 2000, assorties de rentes complémentaires pour son épouse et ses enfants (cf. décisions du 17 décembre 2001, confirmées par jugement du Tribunal des assurances du canton de Vaud du 17 novembre 2005). De son côté, la caisse de pensions a également alloué à P._ une rente entière d'invalidité du 1er mai au 30 juin 2000, puis une demi-rente fondée sur un degré d'invalidité de 50 % dès le 1er juillet 2000, ainsi que des rentes pour enfant correspondantes. Le 29 septembre 2005, elle l'a cependant informé qu'elle réduisait les prestations d'invalidité en raison de modifications de son règlement (valables dès le 1er janvier 2005), qui prévoyaient la prise en compte dans le calcul de surindemnisation, notamment, des «revenus théoriques pouvant être perçus pour la capacité résiduelle de gain». Dès le 1er décembre 2005, elle lui verserait des rentes d'invalidité d'un montant mensuel total de 24 fr., compte tenu d'un revenu théorique estimé réalisable de 2'665 fr. par mois. Dans l'échange de correspondances qui s'en est suivi, la caisse de pensions a confirmé la réduction prévue. B. Par écriture du 28 novembre 2005, P._ a ouvert action contre la caisse de pensions en concluant au maintien du versement des prestations d'invalidité pour un montant total de 2'052 fr. par mois au-delà du 30 novembre 2005. Par jugement du 25 mai 2007 (dont la rédaction a été approuvée le 24 août 2007), la juridiction cantonale a rejeté la demande. C. P._ interjette un recours en matière de droit public contre ce jugement, dont il demande principalement la réforme, en ce sens que les demi-rentes d'invalidité versées par la caisse de pensions ne sont pas réduites après le 31 (recte 30) novembre 2005. A titre subsidiaire, il conclut à l'annulation du prononcé cantonal et au renvoi de la cause au Tribunal cantonal des assurances pour instruction complémentaire et nouveau jugement. Il requiert par ailleurs le bénéfice de l'assistance judiciaire. La caisse de pensions conclut au rejet du recours, tandis que l'Office fédéral des assurances sociales (OFAS) en propose l'admission, dans le sens d'un renvoi de la cause au Tribunal cantonal des assurances pour complément d'instruction sur le revenu raisonnablement réalisable et nouvelle décision.