I strongly suspect that the issue with the slaves is that they get a malformed data-stream from the Pi, go all pear-shaped, and choke.
The way to keep the slave devices from choking is to avoid them going all pear-shaped, and the way to avoid that is to not send them malformed data streams.
Active power-switching is an entirely different subject.
The simplest active power switch is a power MOSFET pair, connected between VCC and ground - with the power lead to the device connected to the center point of the MOSFET pair. If you tie the two gates together and bring them out to a pin, (through a suitable isolating resistor), driving the pin one way will turn power on to the device. Driving the pin the other way will disconnect it from VCC and tie the device’s VCC input to ground, preventing it from being damaged because VCC was left floating. The problem with this is that it assumes you have enough GPIO pins available to switch every device you want to control.
There are pre-packaged MOSFET pairs with a certain number of pairs per chip, kind of like the 7400 series IC’s with six inverters or four op-amps in them.
The design is simple bordering on trivial. Implementation won’t be because a standard single or double sided board will be huge unless you get fancy with multiple layers and ground/power planes within the PCB itself.
Take a look at DigiKey or Mouser, they might have this as a complete assembly.
Another issue is where you will put it? Even if it’s small, it won’t be tiny, and spare space on a GoPiGo is at a premium. Not to mention that you will have to cut interface cables and hard-wire the device to the Grove connector cable and whatever GPIO pin you were using to control it.
One thought would be to make it an in-line device, one switch per device and using the “alternate” data pin on the Grove connector to control the switch. Unfortunately, this would only work on an A/D connector. Switching power to any connector being used for i2c would require the switch to be hard-wired.