How to make a non-human character customization screen?

Stick with an object, then. It’s easier to make it replicate for multiplayer, anyway!
It’s also convenient to put the “assign yourself to a material” function inside the object itself, whereas structs cannot have methods.

Make this an actor component, add it to your player character.
(Each of the properties are marked as replicates notify, and savegame, and each of the onrep callbacks calls the “apply material” function, which you should also call when the UI changes something. You may need to forward the message to the server as well if you’re multiplayer.)