It is interesting, my guess is it may be,
Servlet, just like
EJB, is supposed to be instantiated by container.
And, they are not supposed to " throw exception" while they are instantiated. If you have operation which may throw exception inside the constructor, it fails. Or, if you catch the exception within the consturctor, can you sure the servlet still "valid"?
However, init() declare to throw ServletException, which allow you to stop servce any requests if the setup operations throw excpetion or error occurs.