Hey Carolyn:
If you have a one-to-one sync between the two systems, you should look into why they're not being synced over to address the source of the problem.
If you're syncing leads through Marketo programs that are synced with SFDC campaigns on the program level (the most efficient use of API calls to send leads to SFDC from Marketo), I've heard of problems after you pass SFDC's recommended campaign membership cap (10k), in which the program-to-campaign sync makes leads randomly not pass through to Salesforce.
In your Lifecycle Processing program, you can add a wait step after lead creation of 1 hour, and then add a flow step for "sync to Salesforce" with a choice of "if SFDC Type is empty." That way you'll maximize API calls to SFDC for lead creation via program sync, and have a backup in case that fails for some reason. (In cases like this, I also always add them to a static list for easier pattern recognition later.)
With your database of ~150k records, that should be a fine way to deal with the problem. If you have a large volume of triggered smart campaigns that are timely, and you're not concerned with how quickly leads are synced to SFDC, scheduled batch campaigns are more efficient than triggered campaigns, so you could schedule a weekly batch campaign on Saturday at 6pm to do the sync. 6pm on Saturday because SFDC API calls are within 24 hours, and that way you're neither limited by the API calls from the day before nor restricting the API calls of the non-work day following.
Best,
Edward Unthank | Founder, Etumos