If I understand correctly you can do this in a variety of ways.
1) The lead owner can change the value in your CRM and have that synced to Marketo
2) The lead owner can fill out a form and change the lead that way
3) The lead owner can log into Marketo and change it manually
4) You can set up a campaign to do this in an automated fashion with the Change Data Value flow element
I'm assuming that you use Salesforce, and that you don't want to set permissions in Salesforce so that lead owners may re-assign leads within that platform directly. So you may want to try one of the following:
Using the "campaign is requested" trigger [for the example, pretend you have a lead owner named Karen]
1. Create a new smart campaign called "Change lead owner - assign to Karen" or whatever variation of this works with your existing naming conventions
2. Use the smart list trigger step "campaign is requested" with source "sales insight"
3. Add flow step "Change Lead Owner" and choose "User: Karen Smith"
4. Repeat for each lead owner to whom leads may be reassigned.
This would allow your lead owners (assuming they all use Salesforce regularly) to easily re-assign using the Sales Insight "request campaign" option.
Use a form to trigger the lead owner change
1. Create a form named "change lead owner - assign to Karen" or something along these lines. Probably easiest to have this form include only email address and first/last name but that's up to you
2. Create a smart campaign triggered by "Fills out form: change lead owner - assign to Karen"
3. Again, use the "Change lead owner" flow step to set Karen as the new lead owner
Depending on how frequently this happens, you may want to also include an alert email to the new owner (letting Karen know that a new lead has been assigned to her) or to both the new and old owners. Also, I recommend checking to see if there are any automatic assignment rules set up in your Salesforce instance, as Marketo-driven lead owner changes may interfere with these rules in SFDC.