I want to know the difference between these two kinds of virtualization in VPS Hosting. Which one is used by hosting companies? And also tell which one is best? Commonly used software for software based partitioning?
In a software based virtualization environment, the virtual machines share the same kernel and actually require the main node's resources.
In a hardware based virtualization, the virtualization mechanism partitions the real hardware resources. In typical implementations, no burst and/or realtime quota modification is possible; the limits are hard and can only be modified by restarting a virtual machine instance.
It is probably easiest to think of the difference between hardware and software virtualisation from the point of view of the guest.
In software virtualisation, a whole machine is virtualised including the hardware. An example is using VirtualBox. A VirtualBox guest will "see" that it has a graphics card called a "VirtualBox Graphics Adapter" irrespective of the actual graphics card installed in the host machine and the hard disk it will see will be a "VBOX Harddisk" irrespective of what is installed in the machine.
In hardware virtualisation, the guest is more likely to see the actual hardware of the host machine. Rather than have a program like VirtualBox running on a complete operating system, you are more likely to have a "stripped down" operating system called a "Hypervisor" which handles which guest has access to what hardware when.
As the hardware virtualisation is accessing the hardware more or less directly, it tends to be much more efficient than software virtualisation and so it is very unlikely that any real ISP is going to offer software rather than hardware virtualisation to its customers.