МР>Можно ли было реализовать variadic templates в C++98/C++03 или они используют какие-то возможности языка, которые появились только в C++11?
Странный вопрос. Variadic templates определены в стандарте 11, а в стандарте 03 их нет. По-этому, в С++03 их использовать нельзя. Можно ли было определить их в стандарте 03? Можно было, и в 98 можно было, и в CFront можно было реализовать. Но их там нет.
Если вопрос стоит "можно ли их эмулировать в С++03" — то можно с определенной долей успеха. См., например, Boost.MPL.