While @Carey's response is correct, it's not the most important reason for the wrapper class.
The Servlet spec says that if you forward a request or response inside a servlet/filter/JSP, then the request and response objects must be the same request/response objects that the container originally passed in, or must be wrappers around them, using the supplied wrapper classes.
So for filters that want to override the behaviour of the supplied request/response objects, they are required to extend the wrappers, rather than just create a new request/response class from the interfaces.
Note that some servlet containers (such as older versions of Tomcat), ignore this part of the spec.