What should it do? HttpServlets are designed to respond to specific HTTP requests. I suppose the designers of this API could have added do-nothing methods to HttpServlet and not made it abstract, but I can't think of a good reason for doing this.
I think that the GET method not supported error is returned by the container.
We could discuss whether any result code is returned by the servlet or the container, but in this case the error code is returned by the methods in the HttpServlet class, as Paul said.
The javadocs of earlier version of the HttpServlet class used to state explicitly that the default implementation returns an error code about the method not being supported, but someone chose to remove that rather useful comment.
Since there would be no point in instanciating and running an instance of HttpServlet, it makes perfect sense for it to be abstract.
Also, since a subclass of HttpServlet can be useful with zero, one, or up to all of the doXxx methods implemented, it makes no sense to force developers to implement any of these methods by declaring them abstract.