I have mentioned most common reason behind this and how to curb it:
1.Difference in Client environment and testing environment :
So we should always try to make client and QA environment almost same
2.Old issues not tested or due to poor testcases
We should always update testcases for full functionality cover in every sprint as per the changes happen and should be executed appropriately
3.Lack of understanding of user experience
We should always focus on the user objective for application and how user going to use it. Which of the modules are important which are less important so that we can put more effort on important module and do exploratory testing on it .
Some times developer miss some codes and don't deploy them led to unnecessary discrepancies and errors. So we should keep requirement sheet handy always incase of UAT test we can verify whether all requirement are deployed and working fine or not.
Incase you can get defect try to figure out what was the reason behind that (most probably one of the above) and report to dev team. They will fix it and test it thoroughly and let client know if any existing issue in application