Given that scripts are assigned numerical values like everything else, yes, what you describe should be quite possible. So, for instance:
slot_script_on_intercept = 30
slot_script_on_arrival = 31
[In an operations block when the messenger is created:]
(spawn_around_party, ":Source_town", "pt_messenger"), # Stores the partyID of the spawned party in reg0.
(assign, ":Messenger", reg0), # For clarity and safety - reg0 is not a safe storage spot, it's written to secretly too often.
(troop_set_slot, ":Messenger", slot_script_on_intercept, "script_bite_cyanide_capsule"),
(troop_set_slot, ":Messenger", slot_script_on_arrival, "script_mobilize_the_peasant_militia"),
[In a different operations block when he arrives at his destination:]
(troop_get_slot, ":Messenger_script", ":Messenger_that_just_arrived", slot_script_on_arrival),
(call_script, ":Messenger_script", ":This_town"),
... and so forth.
Yes, I think this should work fine, and it's a good thought - one which hadn't occurred to me. I don't think it will exactly make anything possible which wasn't before, but it may make certain code much cleaner. Obviously test first...