Most applications don’t “understand” the concept of growing or shrinking memory or CPU cores, an OS like Windows for example won’t see the new hardware until reboot making it moot. Linux kernel is fine with it, but the application may not be able to leverage it without restarting.
For most it’s a bit of a gimmick. You can’t hot unplug CPU, some applications may have undocumented or unexpected behavior when total memory changes without restart.
I believe this is intended to emulate other platforms like mainframes where hot plugging and live migration is designed into the OS and application stack. For your garden variety Linux or Windows systems, rebooting is still expected.
In most cases the better way is to go at it in reverse. Assign the maximum amount of CPU and memory, then use the vCPU cycle limits and memory balloons to limit the amount of resources it can access.