Discrete logic can be cheaper than a microcontroller, depending upon how much is required; application-specific chips can be cheaper if one makes enough of them to recoup one's engineering and tooling costs. Programmable logic is usually more expensive, though, because the elements which store the configuration must be scattered around the chip near the things they control (meaning they don't pack as efficiently as simple addressable flash memory), and because its higher cost tends to limit its uses to applications where microcontrollers would be too slow.
Note also that even a comparatively simple chip like a 16V8 (the simplest common programmable logic device) has 64 rows of fuses, with 32 fuses per row, plus a few mode-select fuses. That's over 2,048 fuses in total. A cheap microcontroller like the PIC 10F200 has 3,072 bits of flash. Given that flash memory packs more tightly than the control bits in programmable logic, it may be possible for the 3072 bits of flash needed by the PIC, plus everything else in the controller, to take less die space than the fuses-and-logic block of a 16V8 (it would probably be pretty close). The next larger CPLD (20V8) would have over 2,560 fuses, and the one after that (22V10) would have over 5,500. Programmable logic may seem simple, but microcontrollers are often smaller and simpler.