strPb1.Length siempre será mayor que 0 en su código. Si no hay comas, Split(',') aún devolverá una matriz que contiene la cadena original. Por lo tanto, su configuración inicial de valor no es necesaria.
QueryString y split() parecen estar bien. Quizás el problema radica en otra parte de su código o en la cadena de consulta que está utilizando. Si va a volver a agregar las comas en su cadena, ¿por qué eliminarlas?
Además, una alternativa al uso de un parámetro delimitado por comas es reutilizar el mismo parámetro.www.test.com/?pm1=test1&pm1=test2&pm1=test3
string[] strPb1 = Request.QueryString.GetValues("pm1");
if(strPb1 != null && strPb1.Length > 0)
{
for(int i = 0; i != strPb1.Length; i++)
{
//Code here
}
}