There is no difference between using OR ; i.e. it is a convention used by C++ programmers. I myself prefer as it more clearly describes it use; i.e. defining a template with a specific type :)
Note: There is one exception where you do have to use class (and not typename) when declaring a template template parameter:
template <template class T> class C { }; // valid!
template <template typename T> class C { }; // invalid!
In most cases, you will not be defining a nested template definition, so either definition will work -- just be consistent in your use...