You could certainly implement the Proxy pattern so that RealSubject is invisible to Client. Indeed, if every client is expected to use only the proxy, that would be a good OO approach.
On the other hand, a proxy is typically used to increase efficiency or security, or to add functionality such as lazy loading. If there are many clients, some of them may not need what the proxy adds, and will use RealSubject directly.
In the case of a library API, RealSubject might be exposed (public) to allow any client to implement its own proxy. RealSubject is then visible to the client, even though the client only uses its proxy.
Another scenario is that Proxy may only provide a partial interface to RealSubject. Take the example of a protection proxy that controls access to RealSubject. After the client is authenticated, it may be allowed direct access to RealSubject, and the proxy can be disposed of.
As you can see, the value of a proxy often depends on the client(s) involved. Some clients may use it exclusively, in which case RealSubject can be hidden. Other clients may use it temporarily, while other clients may not use it at all.