Let me see if this explains it
1) Container initializes the servlet
2) Container reads DD and creates the config(ServletConfig) object - this config object lies within the scope of ServletContext (i.e a servlet's web application view). This mandates the creation of servlet prior to setting the config object in the servletContext scope
3) Container passes on the config object to the init(config) method.
Why can't the container finish the initialization before calling the constructor (before instantiating the servlet)?
The container places the config object within a servlet's web view - the initialized servlets web view.