I wouldn't call it "spurious" as it does the job.
You can also set up a calculation field in your Volunteer table and not need this relationship. But this leaves you with an extra field in Volunteer, so you have to decide on which "spurious" field you want, the global or the calcualtion.
IF ( Role = "Volunteer" ; VolunteerName )
Select text as the return type, use this new calculation as the second field and set your value list to sort on the second field.
In some cases, If ( Role = "Volunteer" ; Volunteer ID )
can be used instead, but only if you don't sort your value list by volunteer names.
I used "spurious" as I would expect to be able to apply a filter/calculation to the value list when it is being built. Of course...on a large table that would likely create performance issues and so on...however for a small table it is a simpler solution vs. creating a relationship.
I changed it over to a self-join relationship from a global field to do the filtering (I'll have a cluster of these hanging off the contacts table).