Why is this an issue?

private methods that are never executed are dead code: unnecessary, inoperative code that should be removed. Cleaning out dead code decreases the size of the maintained codebase, making it easier to understand the program and preventing bugs from being introduced.

This rule also raises on unused protected methods in PHP enumerations. In PHP enumerations private and protected are equivalent because inheritance is not allowed.

Noncompliant code example

class Foo {
  private function __construct() {}   // Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.

  public static function doSomething() {
    $foo = new Foo();
    ...
  }

  private function unusedPrivateFunction() {}  // Noncompliant
}

enum ExampleEnum {
  case FIRST_CASE;

  private function unusedPrivateFunction() {} // Noncompliant
  protected function unusedProtectedFunction() {} // Noncompliant
}

Compliant solution

class Foo {
  private function __construct() {}   // Compliant, private empty constructor intentionally used to prevent any direct instantiation of a class.

  public static function doSomething() {
    $foo = new Foo();
  }
}