In that case I would not use the workflow launcher, but rather work either with a JCR Observation Listener or a Sling ResourceChangeEvent handler. They give you much more details about the type of action which happened, and then you can invoke the workflow and provide the details in the invocation.
WorkflowSession wfSession = ...
WorkflowModel model = wfSession.getModel("/path/to/wf/model");
WorkflowData data = wfSession.newWorkflowData("JCR_PATH","/path/to/the/payload");
Map<String,Object> metadata = new HashMap<>();
metadata.put("reason","changed");
wfSession.startWorkflow(model, data, metadata);
With this approach you make the "reason" available in the workflow, and of course it should be related to the actual reason (this information is available from both types of event handling).
And then you can access this information like this in a workflow step:
[...]
public class MyProcess implements WorkflowProcess {
[...]
execute(WorkItem item, WorkflowSession session, MetaDataMap args) {
String reason = args.get("reason",String.class);
}
[...]
}