A Saturday does complicate things a little. There is just that connection from St. Goar arriving at the Regionalbahnhof just about 8. I've never cut it that close for a flight leaving FRA, but it's probably possible, if you know exactly where you are going.
Besides the Mainz option, there is also Boppard. It's a larger town than St. Goar, with a few more restaurants. It's down (NW) the Rhein from St. Goar (farther from FRA), but a bigger station (more trains). There is a 5:43 InterCity train that gets to FRA at 7:01. That would give you plenty of time (in fact, you'll probably curse be for not telling you to arrive later).
I've never stayed in Bad Kreuznach, but it's supposed to be nice. There is an RE leaving Bad Kreuznach at 6:31, getting to FRA at 7:20. To get from St. Goar to Bad Kreuznach, go to Bingen Hbf (not Stadt) and connect there.
Nice? Mainz? Not exactly, especially around the train station. Not unsafe, but uninteresting. As I remember, the last time I was there, your choices for dinner were an Italian restaurant around the corner, a Chinese restaurant nearby, and a Döner Kabob kiosk down the street. Of course, it was a Sunday night, and all of the food places in the Hbf were closed. If you are just looking for a place to spend the night without spending an arm and a leg, it's definitely worth it, but don't plan on an exciting evening.
On the other hand, Mainz is only an hour from St. Goar. Check out around noon, go to Mainz and check in to Könighof, then go 50 min to Rüdesheim, see the town, stay there for dinner, come back to Königshof in the evening, and retire early, since you are still getting up fairly early to get to the airport. You can do all of Saturday's travel with a Rheinland-Pfalz-Ticket, 27€ for two people. I'm not sure what time the hotel serves breakfast, but if you can hit the buffet before leaving, it is definitely worth it. In addition to the customary German breakfast buffet, they have an entire table with traditional American breakfast (real bacon, scrambled eggs, etc).