The reason as I understand from the docs is:
Note that SingleThreadModel does not solve all thread safety issues. For example, session attributes and static variables can still be accessed by multiple requests on multiple threads at the same time, even when SingleThreadModel servlets are used. It is recommended that a developer take other means to resolve those issues instead of implementing this interface, such as avoiding the usage of an instance variable or synchronizing the block of the code accessing those resources. This interface is deprecated in Servlet API version 2.4.
I wonder why this realisation only in Servlet 2.4? I always thought this was a problem even in the previous versions.
Finally Sun is not recommending the use of SingleThreadModel.