Here's what the documentation says:
This variable is equal to path to the file for the current request, formed from directives root or alias and URI request;
This variable is equal to the value of directive root for the current request;
This variable is equal to the URI request or, if if the URI concludes with a forward slash, then the URI request plus the name of the index file given by fastcgi_index. It is possible to use this variable in place of both SCRIPT_FILENAME and PATH_TRANSLATED, utilized, in particular, for determining the name of the script in PHP.
As written here, there's at least a difference when using *fastcgi_index* or *fastcgi_split_path_info*. Maybe there are more ... that's what I know of right now.
You get the request "/info/" and have the following configuration:
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
SCRIPT_FILENAME would equal "/home/www/scripts/php/info/index.php", but using $request_filename it would just be "/home/www/scripts/php/info/".
When using it's important as well. See here for further help: http://wiki.nginx.org/HttpFastcgiModule#fastcgi_split_path_info