Sachverhalt: A. Mit Verfügung vom 18. Juni 2002 sprach die IV-Stelle des Kantons St. Gallen der 1948 geborenen S._ ab 1. Januar 2002 eine ganze Rente der Invalidenversicherung zu. Im März 2005 leitete die Verwaltung von Amtes wegen ein Revisionsverfahren ein und traf entsprechende Abklärungen. Mit Verfügung vom 4. Mai 2006 hob sie die Rente auf mit der Begründung, der Gesundheitszustand der Versicherten habe sich verbessert und die Erzielung eines rentenausschliessenden Einkommens sei möglich. Mit Einspracheentscheid vom 14. August 2006 bestätigte die IV-Stelle die Rentenaufhebung mit der substituierten Begründung, die Voraussetzungen für eine Wiedererwägung der Verfügung vom 18. Juni 2002 seien erfüllt. B. In teilweiser Gutheissung der Beschwerde der S._ hob das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 3. Dezember 2007 den Einspracheentscheid vom 14. August 2006 auf und wies die Sache zur Behandlung der Einsprache im Sinne der Erwägungen an die IV-Stelle zurück. C. Die IV-Stelle des Kantons St. Gallen führt Beschwerde in öffentlich-rechtlichen Angelegenheiten mit dem Rechtsbegehren, der Entscheid vom 3. Dezember 2007 sei aufzuheben und eventuell die Streitsache an das kantonale Gericht zur Beurteilung der Voraussetzungen einer Wiedererwägung zurückzuweisen. S._ lässt auf Abweisung der Beschwerde schliessen und um unentgeltliche Rechtspflege ersuchen. Das kantonale Gericht beantragt die Abweisung der Beschwerde, das Bundesamt für Sozialversicherungen deren Gutheissung. 