The problem is that many manufacturers (HP, Canon, etc.) have decided to package their printer drivers into executable installer file, instead of using Microsoft's "inf" file format with libraries.
Windows printer sharing service allows to provide drivers for others versions of Windows for the guest computers, however it requires drivers in the "inf" file format. On the other hand, the guest system can use it's own drivers, if the server (host) doesn't have the correct version, then again it requires the "inf" format. So, apparently, we are in a deadlock.
Fortunately there is a trick that helps to avoid this deadlock.
You will need to:
- Install the printer locally on the guest and host machines.
- On the host machine to share the printer
- On the guest machine
- Go to the printer's preferences (right click -> preferences)
- Go to port tab
- Add port -> Local port -> enter the shared printer's network path (eg. \\PC\Printer).
- Check that it works.
Hat tip to user kgo08 on Tom's Hardware forums.