I am able to reproduce the behavior you have mentioned.
As part of debugging, could find that the workItem Id being in ParticipantChooser Implementation returns as VolatileWorkItem.
(You can log this line of code workItem.getId() -> VolatileWorkItem_node0_var_workflow_instances_server0_2021-03-08_sampleworkflow_10)
On a very high level, with this information could suspect that the details with respect to the workItem node like title, description is not accessible/not in the vicinity of ParticipantChooser implementation.
Alternatively, you can consider use of "Arguments" field of Dynamic participant step to pass inputs along the lines of title/description.(which shall then be retrieved from MetaDataMap, third argument of getParticipant method)
While the same line of code - workItem.getNode().getTitle() being executed from process step will return its respective details (title as authored in process step)
Note : As the granite workflow implementation is hidden, couldn't arrive at the exact reason for this behavior.