The validation is actually done by calling is_validaliasname() and the main criteria is at:
https://github.com/pfsense/pfsense/blob/master/src/etc/inc/util.inc#L1076
if (in_array($name, $reserved, true) || getservbyname($name, "tcp") || getservbyname($name, "udp") || getprotobyname($name))
The reserved words are just "port" and "pass".
getprotobyname() is a PHP function - that effectively prohibits using "tcp", "udp", "ip", "icmp"... as a name.
getservbyname() is a PHP function that checks the (long) list of well-known service names to see if it is known - known ones are not allowed by this validation. So that prohibits "openvpn", and all the other names like "echo", "daytime", "qotd", "http", "www"...
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
I am not sure why those names are bad/unusable in this context. But I guess prohibiting them does not really hurt - you just add some string of your own to the names (e.g. openvpnGWG, wwwGWG) to generate something that is allowed. Prohibiting them would minimize confusion for humans looking through the resulting rule set - no need to wonder if a reference to "openvpn" is to the GWGof that name, or the well-known port.
So maybe it just needs the error message given in response to any is_validaliasname() checks to be a bit more detailed.