There is so many different situations where proxy object can be useful...
Some of them: reference_wrapper from standard library is a proxy object.
If you need to log all access to some object.
If you want to implement lazy initialization, result caching or COW over some already existing class.
If you need to provide tread-safe access to thread-unsafe class
If you need to limit access to the object or forbid part of its interface.