If one lead is assigned to other users (eg: XX) , then owner name changes to XX , So how to stop the changing of owner name after assigning.
Have you looked at using Queues as your buckets? That would effectively put it in the XX bucket and the original owner wouldn't change.
When you assign a lead you change owner of it so this is indeed a catch 22. What is it you wanted to happen with the assign? Perhaps there is another way of doing what you expect it to do, share for example
If you want other users able to read or modify the lead without changing the owner you need to share the record, you can decide also the permissions.
You need to click on
I set up a workflow to notify the team when a lead or account owner is changed.