I use the same lead/contact field for every program. Once the SFDC workflow passes the value to the appropriate campaign, I delete it from the lead/contact so that it can be populated again if they're added to another campaign.
My understanding of the custom object sync is that it will only allow you to read and filter on those objects, but not write to them from Marketo.