It does enforce the constness of the member pointers; just not the constness of what the pointers point to!
To demonstrate, the following is illegal:
class foo { public: void bar() const { p = 0; } private: int* p; };
Would give you a compilation error such as assignment of member 'foo::p' in read-only object.
Basically in a const member function, member variable of type T is regarded as T const, if T is a pointer type, let's say int*, this yields int* const, which means "const pointer to int", i.e. the pointer is not modifiable, but dereferencing it yields int&, not const int&. If T* was regarded as T const * or T const * const, then it'd be a different story.
As for the rationale, just because the pointer is part of the object's state, doesn't mean that the object the pointer points at is (although it can be). Changing what the pointer points at does not change the conceivable state of the object.