Indeed, I based this approach off a patch Rasmus posted some time ago for colored blocks ;)
It is also similar to some other approaches in org-mode, e.g. the "org-%s-complete-link" functions.
I am ok with a single variable that is an a-list that combines face and display.
Would you consider expanding org-add-link-type like this to set those in the special variable?
(org-add-link-type "somename" 'click-func 'export-func :face some-face :display path)
You could always add them manually to the variable for links already defined somewhere else.