We have a similar challenge in our organization, and are in the process of implementing "contact status" to report on progression of contacts to closed deals and then it resets for upsell purposes.
You should be able to get all the way down to revenue attribution with the correct setup. Marketo and SFDC integration with opportunities is pretty useful: SFDC Sync: Opportunity Sync - Marketo Docs - Product Docs
If an MQL the ideal thing would be convert the lead to a contact and attach the contact to an opportunity. The opportunity can have the opportunity size and status and the reporting in Marketo should then let you trace back activity -> lead -> opportunity -> $
Keep in mind that a contact can be on multiple opportunities (over time or at the same time, depends on your business rules) which is why most of the ties for attribution/lead progress etc are done with the opportunity record.
Here is my feedback based on the issues you outlined:
Once an individual is represented as a Salesforce Contact in our system, the sales rep is notified of all significant interaction by email and the creation of a follow up Task in Salesforce.
Your SFDC seems to be setup to notify reps of all interactions and is creating tasks. This can be updated in SFDC so this no longer happens. When you have architected your lead lifecycle in the right way, it should not matter if someone is a lead or a contact, Sales should only be notified when they need to take action at a specific lifecycle stage.
There is no feedback loop from Sales to Marketing on the results of these significant interactions for the Contact (webinars, whitepapers, events, emails, etc.).
If you are syncing your Marketo programs to SFDC campaigns, all interactions should be captured regardless of if someone is a lead or a contact. If this is not happening for you right now, then you definitely have an issue with your setup.
I do like how you are doing a full-sync between Marketo & SFDC. Sounds like you may need to make some changes to SFDC to better accommodate when leads are converted to contacts. We also advocate for a lifecycle status field that spans the lead and contact field, since the default lead status field does not allow you to map any values to the contact.
Hope that helps. Let me know if you have any other questions. Cheers.