Because a fundamental concept behind CDI is the notion of scopes and their associated context. That's the Contexts in Contexts and Dependency Injection. Basically, a bean with a scope has a well defined life cycle, but when you instantiate a bean yourself there is no longer telling what its life cycle is. Read section 2.4 Scopes of the CDI spec.
To give you slightly more insight - CDI does not only @Inject
your dependencies, but also manages their life cycle. That extends beyond simple instanciation and dependency injection, into termination (calling @PreDestroy
) not only for the bean instance itself, but also for all the dependent instances. When you instanciate a bean yourself there is no telling when to do that last part.