An encapsulated object behaves like a black box whose internal state can be changed only via a well-defined interface. A polymorphic operation can be applied to different types and classes of objects. With late binding, you don't need to know which kind of object until run time. This is essential for truly extensible systems, which are by definition never finished. Other programmers must be able to extend your work in ways you cannot anticipate.
Late binding is what enables old code to call new code.
In the real world, extensibility is more elusive than this story would suggest. Smalltalk has no concept of type, so any operation can be applied to any object and only run-time checks can determine if a particular method call will succeed. Object Pascal and Oberon use strong typing, so the legality of many operations can be checked at compile time. Needless to say, you must be able to compile new modules for an extensible system without needing the source for all the old code, and compiling a new module must not affect the correctness of older code, as can happen with some type-checking systems based on global program analysis. It's highly desirable to be able to extend a system using a variety of compilers and languages, but we're not there yet.