It looks like you've found a GCC bug. These both name the implicitly-declared copy constructor:
template Foo<int>::Foo( const Foo<int>& foo );
template Foo<float>::Foo( const Foo<float>& foo );
Per [temp.explicit]p4,
If the declaration of the explicit instantiation names an implicitly-declared special member function (Clause 12), the program is ill-formed.
Therefore Clang is correct to reject this code.