In Gramps, if I have three different sources stating three different years for the same person's birth year, is there a way to identify one of those dates / sources as "preferred", while keeping all three dates / sources attached to the person?
In Gramps you can create a custom event type.
I have created, alongside the built-in Birth type, a custom Alt-birth type.
By adding the details of your preferred record to the Birth it will always be shown first as the birth event.
By adding the details of your other records to the Alt-birth event(s), these display in the individual's timeline according to their date. But they are not selected when sorting/searching/displaying a family's Births.
I am not aware of an explicit "preferred" setting, but I noticed that the first event of a given type seems to be displayed in contexts where it is required (e.g. the tree view). Maybe this can help you, but alas, this would help only a little bit when you (or someone) else looks at a specific person and tries to figure out which of the events is the "right" one.