When you give non-numeric limits, Sum will actually never see your P[x] = 1 definition, because it will evalute the general term P[k], see that it is 0, and continue with it. You can observe this, for example, by using Echo:
Clear[P, x];
P[i_] := Echo[0, i];
P[x] := Echo[1, x];
Sum[P[k], {k, 0, x}]
(* » k 0 *)
(* 0 *)
Clear[P, x];
P[i_] := Echo[0, i];
P[2] := Echo[1, 2];
Sum[P[k], {k, 1, 3}]
(* » 1 0 *)
(* » 2 1 *)
(* » 3 0 *)
(* 1 *)
Instead of giving multiple definitions for P, give only one and put everything in it. In your particular case, you can use, for example, KroneckerDelta:
Clear[P, x];
P[i_] := KroneckerDelta[i, -Polynomialdegree]
Sum[z^(-1 + k) P[k], {k, -Polynomialdegree, -1}]
(* z^(-1 - Ceiling[Polynomialdegree]) *)
Refine[%, Polynomialdegree ∈ Integers]
(* z^(-1 - Polynomialdegree) *)
Alternatively, use If:
P[i_] := If[i == -Polynomialdegree, 1, 0]
Sum[z^(-1 + k) P[k], {k, -Polynomialdegree, -1}]
(* z^(-1 - Polynomialdegree) *)
As you see, Sum in the first case actually gave a slightly weird result, which is incorrect if Polynomialdegree is not an integer. It looks like Sum behaves slightly inconsistent with KroneckerDelta when you give it non-simple limits. Compare the results of
Sum[KroneckerDelta[i, p], {i, 0, p}]
Sum[KroneckerDelta[i, p], {i, 0, p + 1}]
Sum[KroneckerDelta[i, p], {i, p, 1}]
Sum[KroneckerDelta[i, p], {i, p, -1}]
Sum[i KroneckerDelta[i, p], {i, p, -1}]