Usually the problem is the virtual host clauses in your proftpd.conf. I'm not sure why cPanel puts them there in the first place as the FTP protocol has no way of letting the server know which domain they are connecting to.

So just go through and delete any of the virtual host clauses for anyone on a shared IP. Any dedicated IP customers should have their own virtual host, but no shared customers should. The problem is that the AuthUserFile directive in the shared virtual host clauses is getting in the way. That should solve the problem.