Hi Naor,
I have this same issue and after many phone calls and an in-depth engagement with a senior consultant, we've established that unless both the Marketo database and SFDC database are completely synced, the Program-Campaign sync feature is pretty much useless.
In order for a member of the program to also be added to the SFDC Campaign, it has to first exist in SFDC. Also, the flow step "Add to SFDC Campaign" automatically includes the "Sync Lead to SFDC" step based on auto-assignment rules.
I've had to learn this the hard way - back tracking actions in the activity log and undo-ing a lot of automatic changes.
We've been debating whether to bite the bullet and make the necessary changes in SFDC to "hide" leads until they are sales-ready, but so far this would remove the ability to create custom views in SFDC. Our SFDC admin is currently looking into whether using a unique record type will manage these correctly, but the challenge is in excluding leads with this record type in search results...
I'd first identify what it is that's preventing you from syncing both databases, explore what changes it would entail to begin this process, and then go from there.
Currently, the bandaid in place for my programs is an "Add to SFDC" campaign based on certain triggers. The downside to this is that SFDC Campaign reporting is inaccurate because not all "Sent" leads are visible in SFDC. It's just acting as a bucket to track MQLs generated by this program.
JK