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 exceptions, such as Python which use POST. Also REST API and UI upload of components use a POST request.
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".