Passing char arrays to a function - best practice

You can make and use pointers to functions, even arrays/tables of those. Don't know what functions you will run through a process until run-time? Use pointers and you have the flexibility to make dynamic functionality.
OTOH you could set up integer to say which function and then switch-case to hard-coded functions.

I wonder is it possible to store function pointers in PROGMEM? PGM_VOID_P might get them back out....