Too few arguments at registering new templates in my plugin

This is the problem, or rather what is missing from it:

add_filter( 'theme_page_templates', __NAMESPACE__ . '\register_plugin_templates' );

Specifically, you never told it that your function can accept 3 parameters, so it assumed it only accepts 1 as that’s the absolute minimum needed for a filter to work. Then on top of that, none of your parameters are optional, they’re required/mandatory. So PHP doesn’t know what to do and generates an error.

Think of it this way:

If you were at a safe/vault and was told that to unlock it you had to place all 3 hands in the slots provided, what would you do? Most people have 2 hands, and others fewer, and you can’t use somebody elses hand, so what are you supposed to do? It needs 3!

The official docs cover what parameters add_filter takes and what they do:

add_filter( string $hook_name, callable $callback, int $priority = 10, int $accepted_args = 1 ): true

Your code only provides the first 2, and doesn’t define the priority or accepted arguments number.

https://developer.wordpress.org/reference/functions/add_filter/