Generics in .NET languages aren't (or won't be) the same thing as
(non-managed) C++ templates. Having said that, it makes sense that there
should be CLS rules that enable generics in various .NET languages to work
together - otherwise it will be difficult to have generic collection
containers in the new framework. Since the generic is written into IL in its
generic form, then resolved when jitted, the intent is to have interop
across languages.
BTW, Eiffel has generics on .NET today - it's basically just an intelligent
expansion of the generic Eiffel source code into non-generic IL.