Why doesn't my Virtual Machine based on a x86 (32bit) template show more than ~3G of RAM?
x86, being 32bit, is limited to ~4G address space. Typically, a 32bit OS would be limited to something like 3.5G practically, depending on how the hardware was mapped into this address space.
XEN and KVM can provide PAE, which allows conforming 32bit OS capability to access more RAM if its available. But such access is dependent on how the kernel has been configured and compiled, among other factors, and is subject to change.
x86 based VMs with >3.5G are not recommended, as they are likely to simply ignore the extra RAM assigned and in some cases won't boot. Please use x64 templates for VMs with large RAM requirements.