The main reason I use it (occasionally) is for situations where I don't want PHP to output standard error messages that might screw up the output of the page or, more importantly, to prevent malicious users from gaining too much info about the site structure. For instance:
$fh = @fopen('/home/username/datfiles/file.txt');
if($fh == FALSE)
{
echo "<p class='error'>Sorry, there was an error accessing the project data</p>\n";
}
else
{
// continue processing data from the file...
}
So in this case, the user would only see a generic error message rather than something to the effect that PHP was unable to open the file '/home/username/datfiles/file.txt'. But the main thing to remember is that if you're going to suppress error messages, then it becomes your responsibility to make sure you handle any errors in an appropriate manner.