people seem to always blame over feeding but these guys will eat ANYTHING, even each other. I know this because I took some out to send someone and I left the holding container one extra night and when I went back their were about 3 empty snail shells in there.
I am sure they died first but look at it this way.
Stop over feeding, they will eat algea, no algea (yeah good luck) they will eat your decaying plant matter (plants always decay parts to grow new ones), okay no plants they will eat fish waste if they have to and then lastly each other.
Aside the loach, which now on my new loach Ive found doesnt want anything to do with them (so its hit or miss) the other two options I use are
a small 5 gallon tank siphon. For some reason the small siphons have a bit more power than the bigger ones. I think they are faster. You can use this to suck out baby snails hiding in the substrate. Trust me it works.
Next, I actually found this by accident. People have crafty ways of making traps but heres a cheap easy one. Take a cucumber end with maybe an inch or so of length on it. Core a bit out then sink it (I use plants weights). The fish will eat the meat out and then at night the snails will climb in the finish it. I must have pulled out 100 snails inside the end when I did it. And this was just a small end.
Heres my theory on snail traps tho. You are only getting the ones in there at that moment, so how many actually filled up then left only to now breed more, but hey its another option.
As for puffers. Mine completely ignore MTS snails. Only my first yoyo loach got them.
I may look into a clown loach since they are a bit bigger but I have to get my 55 set up for that.