In my experience, the labour of volunteers and low-wage workers is frequently wasted, just like other free or cheap resources. Unlike for expensive market work, there are no price signals to guide people to the most important tasks first. If activities are not prioritised based on how productive these are, then randomly allocating labour is likely to select work with low usefulness.
Within an organisation, competent managers of volunteers may direct them to the most productive work, but even with the best leaders managing some volunteering opportunities, it remains unclear which organisations do the most good and thus should get priority labour. There is a limited amount of work hours available, just like other resources. Even the best volunteers cannot do everything at once, so to maximise social welfare, the most helpful tasks should be done first. In market work, the employer at which a worker is most productive is generally willing to pay the most for this person’s services. Then if people follow the money, their labour gets allocated to the highest-value tasks.
Of course, markets are not perfect and the importance of some work is not accurately measured in money, but for reasonably rational agents, a noisy signal is better than no signal. Prices carry information and help efficient allocation of resources. One way to better allocate volunteer labour is to establish a pseudo-money for unpaid work: each nonprofit organisation gets a certain amount of credits initially and can spend these to “hire” voluntary workers. Credits used for one person cannot be used for another, so the organisation willing to give away the most for a given individual’s services is probably the one receiving the greatest benefit from that person. Volunteers can then use the credits offered to judge where they would be the most productive (could do the greatest amount of good).