My understanding is that there aren't any hard and fast rules here.
For example, you could coordinate all map writes via a mutex that's not even stored on the map, there is no inherent link between any mutex and your map - its just about how you use them to coordinate access to your data.
Essentially if you lock individual elements you will see less contention over the locks because the locks will be acquired less often, if you use an outer lock over all maps there will be more contention as more processes will be trying to acquire the same lock which will reduce how much actual work your processes can get done.
It's ultimately up to you to work out what works best for your use case
Help with that:
There is a new tool available in go 1.9 that allows you to benchmark lock contention to see what approach is most efficient for your application.
Building and running your app with the
-race flag will help determine if the locks are doing their job correctly
You could also take a look at the new sync maps which I haven't played with yet but I understand handle this for you: