Different distros may not use the same drivers or releases thereof for your wifi hardware. If they don't, then fixing that might help a lot. Take a look at lsmod output for the ones that work vs. the ones that don't.
Sometimes you can download better drivers from the manufacturer's website than those which came with your distro.
You should take a look at dmesg output (while the system is connecting and disconnecting) to see if any wifi related error messages are being issued. They'll probably be at the end of the log, so you don't have to put it through a pager like less - at least for the first look.
Also, here's a little script I wrote to continuously display wifi signal strength in a dialog box. If you don't have yad installed (consider installing it! or ...), you can just let the results spill out onto the terminal.
You should be able to see if the signal strength is varying a lot or is just plain low - which may be a driver issue (it was for me). And, you can see if signal strength is distro dependent.
Last I saw, zenity won't do for this because it didn't have a tail option to follow the output and didn't have a clean way (kill-parent) to terminate the loop.
You will also have to adjust the script if your wifi connection is not wlan0.
Code:
#!/bin/bash
## Display wifi link quality
##source ~/bin/bash_trace
while true
do
iwconfig wlan0 | grep Quality
sleep 2
done | yad --title "WiFi Quality" --text-info --width=300 --height=180 --tail --kill-parent