The problem is the terrain doesn't lend itself to trains at all without a super expensive investment, and the population of Peru is spread out so much once you leave Lima.
Flights in general are terrible in Latin America in terms of cost which is why the bus is popular. More so international but even domestic is pricey for the quality and distance. Plus stopping in Paracas/Nazca/Arequipa makes the bus a good way to cheaply hit those spots. Flying back to the start is a good move though
I think lack of competition is a big problem. There aren't a ton of major airlines here. The population is also pretty spread out compared to Asia/Europe.
Domestic is usually okay. I just recently flew to the edge of Peru to visit Bolivia by land because it saved enough money to justify the extra time.