Why do embedded systems need to be programmable?
In large quantities (millions of copies), ASIC can be cheaper than programmable parts.  On the other hand, the development of ASIC silicon costs at least an order of magnitude more than development of FPGA or microcontroller (μC) code.  The great thing about software is that - almost by definition - it "enjoys rapid prototyping environment" [1].  Silicon doesn't.

Also consider flexibility.  What if one wants to change the behavior of the product in the future?  Making another ASIC silicon design would incur another NRE expenditure.  Firmware of a programmable part doesn't require changes in silicon.

[1] Rick Dove

edit: related threads
How much does it cost to have a custom ASIC made?
What are the practical uses of ASIC?