I can't remember the exact differences, but they can vary. They'll usually be the same, but if you are using mod_rewrite for 'pretty URLs' you'll get some variation here (the requested filename, and the actual file on the server), and I believe the other two might vary based on how you use include(), although I'm not certain about that.
The value of Array REQUEST_URI is /test.php
The value of Array SCRIPT_NAME is /test.php
The value of Array PHP_SELF is /test.php
Presumably the three indicated elements are not interchangeable, but I can't see the difference.