We can see a lot of different roles in a software project team. It is very normal to be confused. One big distinction that needs to be made is between Customers and Users. In most projects customers and users are not the same person and should not be treat as the same. We can say customer is the one that is paying for the software to be built, and user is the one that is going to use this software.
Customers, Product Owners, Executives, Business Analysts, Domain Experts, Project Managers, all these stakeholders normally have a lot of knowledge about the software that needs to be built, but normally, they are not going to use the software at all. That is why the end user should be considered as a resource inside a software team, and the closer they get to the developers, the better.
"Face-to-face meetings are the ultimate in flexible one-on-one interactions and allow customers and developers to work closely together to resolve issues and clarify ambiguities." (The Art of lean Software Development)
Combining user knowledge with technical knowledge creates a dynamic that drives to a much better solution than with only intermediaries or representatives. Users provides the reasons and developers provides the possibilities, together they inspire each other and create solutions much greater than separated. The best role for the proxy people is to feed users and developers of information and to avoid conflicts when they show up.