Это так, потому что оно происходит от MySQL, где не было опции CAST AS VARCHAR. В MySQL был только CAST AS CHAR, который производил VARCHAR. Вот какие поддерживаемые параметры были в MySQL 5.6:
https://dev.mysql.com/doc/refman/5.6/en/cast-functions.html#function_cast
См. Они явно упоминают, что « Для значений короче, чем N символов". Позже MariaDB начала добавлять CAST AS VARCHAR только для того, чтобы сделать его более кроссплатформенным, совместимым с такими системами, как Oracle, Postgre, MS SQL, et c.:
https://jira.mariadb.org/browse/MDEV-11283
Но по-прежнему CAST AS CHAR и CAST AS VARCHAR одно и то же. И я думаю, так и должно быть. Зачем вам нужен тип данных фиксированной длины в ОЗУ? Это должно иметь значение только тогда, когда вы его сохраняете.
Например, если у вас есть таблица с типом данных CHAR:
CREATE TABLE tbltest(col CHAR(10));
и вы вставляете приведенные как данные VARCHAR, например:
INSERT INTO tbltest(col) VALUES(CAST('test' AS VARCHAR(5)));
он будет сохранен как тип данных CHAR (10). Потому что это то, что используется в таблице.