Programmers should be caution when issuing grabs. This basically takes control from the user, leaving them at the mercy of a program that might not be operating as expected...
Not only that, but if the user needs for instance to copy and pass data from another window, or needs to handle some emergency, and the app has issued a grab, the app is not going to be looked upon kindly.
My two rules for [grab -global]:
(1) don't use it unless I'm absolutely sure I know what I'm doing, and
(2) if I think I need it this is a sure sign that I don't know what I'm doing :-)