It doesn't work because it doesn't come back here until your redirect is over, so it doesn't run that code. You have to run the initialize_globals call in your subrequest that you redirected to. You can try calling it just before the internal_redirect, but I'm not sure that will work.
Ok I figured it out... the trick is to update $r->args before calling CGI::initialize_globals and then do the internal_redirect after all that is done.