The "edit" privilege allows HTTP PUT requests, and the "add" privilege allows "POST".
Most build client tools that interact with Nexus Repository deploy content via PUT requests, but there are a few exceptions, such as Python.
The simplest thing to do is not to worry about the above, grant add+edit to anyone that needs to deploy artifacts and use the repository's deployment policy to control whether components can be updated.
If you don't want to allow overwriting artifacts in a repository that should be done with the repository's deployment policy, setting it to "disable redeploy".