A soft-core processor is a processor implemented using the FPGA fabric.
A hard-core processor is a processor that's actually physically implemented as a structure in the silicon.
Basically, you can add a soft-core processor to a FPGA-based system after it's already designed. However, adding a hard-core processor requires either a different FPGA, or an additional chip on the board.
Hard-core processors are preferred when possible because the price/computing-power ratio for a hardware CPU is much better. Implementing a CPU in FPGA fabric is very resource intensive, particularly if you want a lot of computing power. The equivalent hardware CPU is likely much cheaper.
Not only is the hardware CPU much cheaper, but it is also likely to be much more energy efficient. In battery-operated platforms, efficiency is crucial for long battery life. Unused gates in an FPGA can sometimes be turned off, but usually there are far more active circuits in a soft core processor than in a purpose-design hardware CPU. All of that potential FPGA silicon consumes power.