Whether you use fields with global storage or global fields variables, the result is much the same. The values are accessible from any layout context within the field where they are created. A relationship can make global fields, but not variables accessible in a different file if you set up the needed external data source reference.
The alternative to using globals would be to set up a relationship to occurrences of your preferences table wherever this is needed. This produces a more complex relationship graph and you have to come up with a way, in each context to access the correct preferences record for each user, but it can be made to work and edits to a preferences record by one user can then be immediately accessible by another.