You can also try running the whole project at a higher frame rate (simply change the FPS in the render dialogue). Then in your compositor just skip frame or time warp (without interpolation) to bring the frame count back down.
The issue with particles passing through is that on any one discreet frame, they might not quite touch the barrier, then one frame later they are beyond the barrier so technically there is no interaction.
As Jim suggested ramping up the samples usually does the trick (and sometime you have to go really high depending on the speed of the particles)
You could also add a TPposition node in there that says if the particles are beyond a certain distance, just kill them. In essence this is what the barrier is doing but that is more of a yes/no kind of test. With a position node you can use a greater than test.
You could also use a stunt double for your barrier (or use multiple barriers) that are invisible. Sometime an object just doesn’t have enough geometry to catch all the intersecting particles along a curve. So you can rez up a duplicate of your geometry and hide it and it becomes the barrier.