Grout just fills the gaps between tiles; it's not responsible for adhesion to the wall. If the tiles are coming off, the problem is (I believe) moisture rupturing the drywall supporting the tile. You gotta fix that. Regrouting/caulking will only partially delay more damage, and won't help tiles to stick to brittle surface.
If it were me, I'd just pop off tiles in the offending area, cut out a section of drywall, attach new backerboard, and re-adhere/re-grout the tiles. It's been my experience that as long as the grout is regularly sealed, it doesn't permit that much water damage. The real problem is around the perimeters, where the tiles meet the wall or the tub. That should be caulked with silicone. If you only have to do this once every 30 years, you're doing well!