I did some work a couple of years ago on an OpenWRT MIPS based OEM board for a new product. Initially it seemed the obvious way to go, much of what was needed was already there, the board was cheap as chips, certainly cheaper than I could make it. The bad news came as I ended up diving deeper and deeper into the code and hardware, and after two or three weeks it became clear this was not going to be the way forward for the product.
There were bugs in the USB host code specific to MIPS for example, that I fixed, although getting the code accepted back into the builds was not straightforward, so I'd end up with a branch of code anyway for at least some time, something which makes future maintenance a PITA. In the end I documented the changes publicly so others finding similar problems could readily look up the fix.
The documentation and hardware support for the underlying chip itself was somewhat lacking too, making device driver implementation very difficult, for example I was attempting to use the hardware I2S functionality, and there was pretty much no documentation available for it, which is probably why it hadn't already been included in the OpenWRT build.
In addition there is so much extra baggage when you use Linux in such a device it makes low power battery powered operation really difficult to implement.
One further point on using embedded Linux in any device is that you need to be mindful that you're frequently building stuff on a continually moving platform, especially if it's on a new device, which these days if it's not new, it's not cool anyway! That includes not just the distribution source code for your underlying device, but also the toolchains, so it often feels like trying to build a house on quicksand. While this is not unique to embedded Linux, the same is true, for example, with Qt, where something you compiled a year or so perfectly well will no longer compile as things become deprecated or "improved". I wonder just how many of,us have struggled to get a working toolchain to build an RPi kernel, particularly back in the early days?
In the end I went for a roll-your-own solution, and while it wasn't any cheaper in BOM cost, it did allow for a battery powered solution with reasonable battery life in a small form factor, and the development environment has thankfully remained fairly static.
I am certainly not discounting Linux for embedded systems, far from it, but it is going to be a compromise at the end of the day, Linux brings an awful lot of baggage with it, and while that can be a benefit in that you have nice high level languages available to you, it does make it difficult to implement low power devices. Using Linux to blink an LED seems rather perverse, however the line blurs when you start needing even quite simple GUIs for example.