Are you trying to just show that various leads/contacts have participated in programs? If so, rather than setting activities, have you considered using campaigns? We have various programs in Marketo that, when someone is added to them, they are added to the corresponding campaign in SFDC. Then we can change the status accordingly (i.e. if they clicked, opened, etc., that triggers a progression change). We can also see if deals that were closed/won were influenced by these leads.
As to tasks, while I would manage these from within each of the programs (maybe with a universal template for other users to clone off of to ensure consistency), another choice could possible a trigger campaign:
Trigger: Progression Status is changed
> program is: any
> new status is: Sent (or whatever their status changes to when they enter the program)
Then in the flow:
Create a task.
Subject: Added to program {{programname}}
Status: Complete
This may really affect your data consumption in SFDC, though.
Not sure if this is the right way, but just some suggestions.