There can be many scenarios where you would want to move documents to a different library without losing version history.
Either you need to have 3rd party tools for migration or you have to use good old explorer view to migrate the documents.
If you try to copy over the files by opening both the libraries in explorer view, you might find out soon that, you will be able to copy only the latest version. Previous version history will not come over.
You can achieve this using explorer view if you MOVE the documents in explorer view, instead of copy. Just open both libraries in explorer view and ‘Drag and Drop‘ instead of copy & paste. If you move the documents to destination library, you will also get all the versions associated with it. Only caveat to this approach is, it updates the metadata to reflect the name of person performing the move and time. Latest version of the document has the time and name associated with the person performing the move. This is acceptable in my case, as long as I was able to move all the versions of the document.
Note: Both the libraries should have ‘Versioning’ enabled.
Update: Destination library should be at same site level. If not, you might get ‘Can’t read from the source file or disk‘ error message when trying to move the file.
This behavior is by design and because of limitation of WebDAV move command.