The server variable character_set_client is used by the parser to parse the incoming queries, and as such it can only be set to a character set that is supported by the parser. There is a special check that prevents a non-supported value from being assigned to character_set_client.
But on the server startup the initial value of the global character_set_client is taken from --default-character-set option — it sets all character set variables, including character_set_client, and that bypasses the validity check.