In the context of Drupal, the difference will depend whether clean URLs are on or not.
With them off, `$_SERVER['REQUEST_URI']` will have the full path of the page as called w/ `/index.php`, while `$_GET["q"]` will just have what is assigned to `q`.
With them on, they will be nearly identical w/o other arguments, but `$_GET["q"]` will be missing the leading `/`. Take a look towards the end of the default .htaccess to see what is going on. They will also differ if additional arguments are passed into the page, eg when a pager is active.