This comment in IANA’s tzdata suggests that the existence of “UTC” is about supporting legacy code, rather than an all-out endorsement:
$ grep -B 2 'UTC$' etcetera
# The following zone is used by tzcode functions like gmtime,
# which load the "UTC" file to handle seconds properly.
Zone Etc/UTC 0 - UTC
The other two have a certain semantic difference, in that “Etc/UTC” would follow DST rules (if only “UTC” were the name of a normal time zone that had any), while “UTC+00:00” makes it clear that DST shall not apply.