Clothes weight paint / skinning
Use the data transfer modifier.

1- Select the cloth

2- Shift select the rig

3- Ctrl-P to ''Set parent with empty groups''

4- Select the cloth Alone

5- Add the ''Data transfer'' modifier (anywhere in the stack) then within the modifier:

6- Source object - Select your Rigged mesh (body)

7- ''Check'' Vertex Data (first in the list below Source object)

8- Select (highlight) Vertex Group(s)

9- Click Apply

10- Forget about most of your nightmares and forget about destructive solutions.

You may have to do some additional  Weight paintings  or Shape keys with drivers for the clothes to react the way you want with some flexion but at least, the clothes won't get through your base character as you move your rig with this method.