The difference between a “grab” and “shoot” is provided by the game itself as different actions which can then be mapped to different controller inputs.
Take the scenario below for example:
Squeeze is an independent controller input defined as a combination of two different input components from the index controller(say the trigger+grip).
Grab can be mapped to either squeeze or just the grip only. So for some game environment, it might make more sense to have squeeze as the grab, and sometimes it might be more relevant to have just the grip as squeeze to allow trigger to be mapped to “fire” action.
All of this can actually be configured in SteamVR’s binding UI which you can read up on here.