It is not the school choosing to say that a contribution is voluntary. That's what the law says. It says that for a school trip that is related to the curriculum, and takes place wholly within school hours, payment CANNOT be compulsory and children who do not pay CANNOT be excluded from the trip.
However, the school budget does not include enough money for trips (coach travel is by far the biggest portion of the cost, has risen hugely, and in rural areas there is no walking or free public transport option) so schools do have to ask for the money and if they don't get it, cancel the trip. There is not a legal option to only take children who pay.
There are some, limited sources of funds to provide some money towards the costs for families on low incomes, and PTAs etc do help, BUT if a school also needs fundraising for new playground equipment etc then a PTA's money can only be split a certain numer of ways.
Interestingly, this term my DC's school have gone for a 'these are all the trips we will do this year, this is the total cost, you can pay in one go or in instalments' approach which at least allows for budgeting.