Certainly there are other approaches but I'm specifically comparing error suppression to the param_post() function presented in this thread. When you look at what that function does then it's nothing else but suppress errors with if statements instead of the @ character. For me this is just a syntactic difference so I can as well use the shorter @ syntax.
And it's not only about $POST and $GET, I may want to check other arrays as well:
$type = isset($options['categories']['type']) ? $options['categories']['type'] : null;
When I need to do the above I may also do this and save myself some typing:
$type = @$options['categories']['type'];
Both of these statements do the same thing, they avoid the error when the key doesn't exist and I can't think of a scenario where their result would be different.