Using the timer event would not cater for running the process on a complex schedule, since it only allows having the timer activated after a set amount of time which is specified in the timer nodes parameter, and does not have the flexibility of being specified to not run on public holidays.
As I understand putting the CRON expresion in a variable means that you will have to implement the interpretation of the expresion in the gateway node or "run now" node to say when the process should execute. Which you could do and then have a timer event which fires every few minutes and feeds into this node. Or have the "run now" node be a rule task which makes a decision based on the current time, but then not use a CRON expression but a DROOLS business rule.
Another option to implement the functionality using a CRON expression, is to create a second process which manages the creation of scheduled jobs which in turn kick of the actual process you want to execute. The quartz job will have to communicate via some form to the console server (I think it exposes some web services) to run the processes. The main process can then be used to cancel an existing job and its trigger, if one exists and then add a new job and trigger based on the parameter passed though from the node. You will have to look at implementing a domain specific task node for this functionality though.
Mare