If you're going to be using the info in smart campaigns and flows, you'll need to use apex or a process builder to copy the field values from the customer object to the contact or account object where marketo can pick it up natively, otherwise if you're just using it in emails, you can sync it where you'll have access to records through velocity and a couple of filters + a trigger.
As for syncing SFDC custom objects, as long as the custom object is related to the Lead, Contact or Account object, it can be synced natively. Go to Admin > Salesforce object sync to turn it on - you don't have to "create" a whole custom object in marketo from scratch
Go to Admin > Salesforce object sync to turn it on - you don't have to "create" a whole custom object in marketo from scratch
Joshua is trying to get update triggers, though. That's the pain point & won't happen with SFDC COs, which is where the mirror object notion comes into play.
Every workaround for this is gonna be a hack of some sort. I think the mirror CO is the worst option of all, though.
Like Jay says, you can use Process Builder or Apex to update a flat field on the lead.
When faced with this need I prefer to create another object, call it Customer Update in this case, and sync that to Marketo. Use PB to create the CO record. That allows you to use the Added to Customer Update trigger and also gives you a lightweight audit trail.
If it truly needs to be real-ish time (like realer-ish time than the built-in Marketo sync) then you can use an outbound message, or an Apex callout, from SFDC to Marketo.