Во-первых, vue шаблон собирает по своему, и в шаблонах vue можно писать и другие "теги", потому что за них отвечают компоненты vue. Поэтому, теги в шаблоне могут быть какими угодно, и не всегда совпадают с html.
Во-вторых, тег template реально существует в html. В нативном html этот тег создан для того, чтоб создать кусок верстки и использовать его как шаблон. Например, Вы через js генерируете разметку, без реактов-вью-ангуляров и тд, и Вы можете в html создать template, а когда js будет готов создать еще один блок - он может обратиться к содержанию тега template и превратить его в полноценную разметку, после чего внедрить в страницу результат. То есть, тег template и все, что в нем на странице будет существовать, но браузер его не рендерит и не отображает, все это использует js как формочку для выпекания (образно).
Повторюсь, что vue использует этот тег, но все равно обработка шаблона у него своя, так что совпадение скорее случайное) При его механизмах можно было бы и тег Vue придумать, но решили взять template, типа быть ближе.