Hola,
 
No es por molestar, pero ¿que pasa si unos parametros de la URL son un array (pagina.php?op[]=1&op[]=3&var[1]=hola&var['hola']=adios)? Pues me temo que crearia los links con pagina.php?op=Array&var=Array. 
La solucion es "sencilla". En el foreach metes una comprobacion de is_array($valor), y en caso afirmativo generas todos los parametros de ese array (incluso debes tener en cuenta los arrays multidimensionales). 
A mi ni me va ni me viene, pero por comentarlo tampoco pasa nada  

 (frase de un programa de humor de la ETB) 
Suerte. 
PD: Creo que 
 Código PHP:
              $_pagi_query_string .= (strlen($_pagi_query_string) < 1) ? '' : '&'; 
    
  es innecesario. Simplemente haciendo: 
 Código PHP:
    foreach ($_GET as $clave => $valor) {
           $_pagi_query_string .= '&'.$clave . '=' . rawurlencode($valor);
       } 
    
  obtendremos el query string de la forma '&var=valor&var2=valor'. Y como luego (supongo) vas a concatenar con pg, harias: 
 Código PHP:
    $url='?pg='.$pg.$_pagi_query_string; 
    
  (siento no poner las variables que usas) y no quedaria colgando nada.