Sachverhalt: A. Mit Verfügung vom 12. März 2003 sprach die IV-Stelle des Kantons St. Gallen der 1958 geborenen J._ ab 1. Februar 2002 eine halbe Rente der Invalidenversicherung zu. Unter Hinweis auf die im Gutachten der Klinik X._ vom 20. Juli 2004 ausgewiesene Arbeitsunfähigkeit von 100 % ersuchte J._ am 9. September 2004 um Überprüfung der Rente. Nach Abklärungen hob die IV-Stelle mit Verfügung vom 23. Mai 2006 die Rente auf Ende Juni 2006 revisionsweise auf mit der Begründung, der Gesundheitszustand der Versicherten habe sich verbessert und die Erzielung eines rentenausschliessenden Einkommens sei möglich. Mit Einspracheentscheid vom 15. September 2006 bestätigte die Verwaltung die Rentenaufhebung mit der substituierten Begründung, die Voraussetzungen für eine Wiedererwägung der Verfügung vom 12. März 2003 seien erfüllt. B. In teilweiser Gutheissung der Beschwerde der J._ hob das Versicherungsgericht des Kantons St. Gallen mit Entscheid vom 4. Oktober 2007 den Einspracheentscheid vom 15. September 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 4. Oktober 2007 sei aufzuheben. J._ 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. 