Sling Commons Scheduler's Javadoc asserts that:
A job can be scheduled either by creating a ScheduleOptions instance through one of the scheduler methods and then calling schedule(Object, ScheduleOptions) or by using the whiteboard pattern and registering a Runnable service with either the PROPERTY_SCHEDULER_EXPRESSION or PROPERTY_SCHEDULER_PERIOD property. If both properties are specified, only PROPERTY_SCHEDULER_PERIOD is considered for scheduling.
The part in bold above suggests that PROPERTY_SCHEDULER_PERIOD has a higher precedence than PROPERTY_SCHEDULER_EXPRESSION in case both are present for a component.
However, the implementation in WhiteboardHandler#register does the opposite. It gives PROPERTY_SCHEDULER_EXPRESSION a higher precedence by evaluating it first.
Either the Javadoc, or the implementation must be modified to keep both in sync.