Because the container, who generates the Java code from the JSP, will probably do its own initialization/destruction stuff in those methods. The container deals with methods related ot the lifecycle of the servlet. If you override them, its important stuff is not going to be called. But the container says "ok, you want to do some initialization yourself too ? I'll give you a chance. Make a jspInit method, and I'll call it. You have my words".
What is the class that contains init(), destroy() and service() methods for the jsp servlet in other containers. For example in Tomcat, it is HttpJspBase abstract class. Is it the same in all the other containers???