strPb1.Length sempre será maior que 0 em seu código. Se não houver vírgulas, Split(',') ainda retornará um array contendo a string original. Portanto, sua configuração inicial de valor não é necessária.
O próprio QueryString e split() parecem estar bem. Talvez o problema esteja em outro lugar no seu código ou na querystring que você está usando. Se você vai adicionar as vírgulas de volta à sua string, por que removê-las?
Além disso, uma alternativa ao uso de um parâmetro delimitado por vírgula é reutilizar o mesmo 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
}
}