PGC/ICSPCLK and PGD/ICSPDAT can each be wired in parallel across all devices provided external nMCLR is enabled for all devices and remains enabled after programming. You then need to provide all devices with Vdd power and switch Vpp to each device in turn, run a programming cycle keeping all the other nMCLR pins grounded to keep the other devices inactive and tri-stated, then switch to the next device.
For older PICs requiring high-voltage programming, you may have to handle up to 13V on Vpp and some mA of current so relay switching is advisable. Modern PICs use code entry to programming mode and Vpp never exceeds Vdd, and the nMCLR/Vpp pin is a unidirectional logic input so a simple logic level '1-hot' demux will do to drive them e.g. 74HC238, with the programmer's Vpp going to EN. You will need some scriptable IO pins attached to your programming station's control PC to select the PIC to program. You will probably require an external source of Vdd as the programmer is unlikely to be able to supply sufficient for three idle boards + the active one. This could be controlled by programmer Vdd or by one of the scriptable IO pins.
Alternatively, for a manual programming station, simply use a four pole four way switch to route Vpp to one PIC while grounding all the others.
This approach, albeit with manual selection of the active Vpp by jumper, has been used by Microchip themselves, on demo and development boards that come with a default MCU soldered in place, but allow you to plug in a different MCU on a PIM over it.
Note that the programmer itself may need to have a high output drive capability usually only found on pro grade tools, and you need to keep all the commoned ICSP connections and lead back to the programmer as short as possible to minimise capacitive loading.