A. If you consider a normal OS environment, it doesn't make sense to leave resources idle if they can provide any benefit. So most OSs will use additional RAM for caching information that may be needed, such as in the Windows 7 SuperFetch feature. As you can see below, my Windows 7 system uses nearly 3GB of memory just for cache, because it's available.
Dynamic memory in Hyper-V is smart enough to not give OSs more memory if they are have plenty that's available and is just being used for items like cache. However, some applications also like to use any memory that's available, and Hyper-V has no way of knowing if it's really needed. In these cases, it would see no memory available and would therefore allocate more, up to the VM's maximum RAM amount or until the Hyper-V host has exhausted its RAM. Applications that behave this way include SQL Server and Exchange, so if you're running these applications in a VM, it's better not to use dynamic memory and instead give them a static memory configuration which allows the application to best optimize its memory usage.