Remo,
here you are talking about a specific problem which is often solved
(incorrectly) by using Service Location and that is not always using
all dependencies that might be heavy to create and inject.
Obviously many people resort to SL at that point, but here I'm with
you cause there's no reason to do SL in such situation - I use exactly
the same solution as you - inject a thin and cheap factory.
However what I'm trying to say is that there is no other option if you
do not control the Composition Root.
As for CSL it is just an implementation of Service Location pattern
that is compatible with many IoC containers - thus it has to be the
least common denominator and if you think about it it isn't that much
of a problem cause SL is very, very rarely needed and when you do need
it in most cases you won't need the extra features of a specific
container, you'll just need to get an implementation of a specific
interface.
Now if the least common denominator is a problem to you then you can
always create your own CSL very easily - I have one at the company I
work for - you just need to configure kernel and put it in a public
static property somwhere, ie. MyCompany.ServiceLocator.Ninject.Kernel
which would be of type IKernel
that's it - no more least common denominator
In my opinion the .NET community is guilty of making SL an anti-
pattern while it actually is not.