公式ドキュメントに記法が示されていなかったので。
確認環境
- CodeIgniter4 v4.1.9
- PHP 8.1.4
対応方法
Controller クラスの validate() メソッドでラベル付きのエラーメッセージを使用する場合は以下。
UserController
public function create()
{
    $input = $this->validate([
-       'name'     => 'required|max_length[100]',
-       'email'    => 'required|valid_email|is_unique[users.email]',
-       'password' => 'required|min_length[8]'
+       'name'     => ['label' => 'ユーザー名', 'rules' => 'required|max_length[100]'],
+       'email'    => ['label' => 'メールアドレス', 'rules' => 'required|valid_email|is_unique[users.email]'],
+       'password' => ['label' => 'パスワード', 'rules' => 'required|min_length[8]']
    ]);
    if (!$input) {
        return view('users/create', [
            'validation' => $this->validator
        ]);
    }
    // ...
}
補足
公式ドキュメントより
The validate() method is a method in the Controller. It uses the Validation class inside. See Validating data in Controllers.
結局、Validation クラス の setRules() メソッドが呼び出されているだけである。
/vendor/codeigniter4/framework/system/Controller.php
protected function validate($rules, array $messages = []): bool
{
    $this->validator = Services::validation();
    // If you replace the $rules array with the name of the group
    if (is_string($rules)) {
        $validation = config('Validation');
        // If the rule wasn't found in the \Config\Validation, we
        // should throw an exception so the developer can find it.
        if (! isset($validation->{$rules})) {
            throw ValidationException::forRuleNotFound($rules);
        }
        // If no error message is defined, use the error message in the Config\Validation file
        if (! $messages) {
            $errorName = $rules . '_errors';
            $messages  = $validation->{$errorName} ?? [];
        }
        $rules = $validation->{$rules};
    }
    return $this->validator->withRequest($this->request)->setRules($rules, $messages)->run();
}


