Windows 7 32-bit just does not allocate and does not use RAM above 4GB address.
Drivers on Windows 7 32-bit can read and write above 4GB address.
If you map 3.9GB, it can be allocated below 4GB address, so the remaining available RAM below 4GB address is too small.
You may try adding "--top" option to your "map --mem" command for 3.9GB disk image. This tells GRUB4DOS to allocate at highest available address.
Virtual disk size >= 4GB should not have this problem because it will not fit in lower region.
You can read size of available memory range in GRUB4DOS by using displaymem command. It is displayed in hexadecimal.
The biggest block can be "slightly" larger than (total RAM - 4 GB) if your motherboard support "memory remap" and it is enabled in BIOS.
I think max size of virtual disk (in VHD) that can be loaded in contiguous memory space is ((size of biggest available block above 4GB address) - 1MB).
Usable RAM: Base: 0x100000000, Length: 0x11F600000
0x100000000 = 4GB
0x11F600000 = 4598MB
Max virtual disk size that can be loaded on this machine is approximately 4597MB (which is slightly less than 4.5GB).