If we give people the right to work without having to pay into the union then the union should be allowed to negotiate for benefits that go to union-paying members that don't apply to non-members. This is currently illegal, but if people are allowed to just not pay then they should be required to forfeit the benefits of union membership if they refuse to pay.
While unions can try to keep benefits to only members, it is not ethical for an employer to treat one employee different from another if the only difference is that one belongs to a particular political group. Thus, if a worker asks for the same benefits as is being afforded to someone at the same level, it would be unethical to not provide that same series of benefits. It would be like excluding women from the benefits men get, or Republicans from getting the same benefits as Democrats in otherwise identical situations. Same work, same treatment.
If someone avoids the union, they should be unaffected by it (as much as possible). It could benefit non-union members, but could also be used to manipulate them. Unions are usually organized crime, and will do what it takes to get more money. This is why some states require you to join any existing union; the unions have pushed for that, which get the owner(s) loads more money.