From what I've seen quite a few RF chip vendors have (more or less) dropped their own Bluetooth implementation in favour of Nimble nowadays.
I have been writing firmware for commercial IoT products based on nRF52 (832 and 840), using the "old" nRF5 SDK (still fully supported). The initial earning curve was relatively painless: good toolchain (based on Segger, free license for Nordic users), great examples with "ready to ship" code, great Nordic support and community. I never disclosed the company I was working for, so I got the same support that Nordic would provide a hobbyist, and that was well above my expectations. Plenty of tutorials to get started on the toolchain and libraries. IF you need to build, e.g. a cycling speed and cadence monitor, you simply take the Nordic sample, change the name to reflect your name, and you can ship that one as is. Want OTA update? add the Secure DFU example, compile the secure bootloader, and you have a BLE S&C sensor with updateable firmware.
I came as an hobbyist from the STM32 world, where the ST HAL code is barely usable, with non-existent sample and ST support. I still love the STM32 for certain things, but the ST libraries are not one of those
Yes, the Softdevice is a proprietary blob, but well implemented, bug free (for all my purposes) and supports additional protocols like ANT+. There are various version, depending on the features needed with different memory footprints (also, different working RAM, depending on the functionality). More importantly, the Nordic libraries fully implement things like a secure wireless firmware update (over any of the supported protocols), with guaranteed recovery in case of problems. Good luck rebuilding all of that on top of a library like NimBLE. I mean, it can be done, but I'd rather spend my time on writing unique code for my scenarios. And even if we implement a half dozen of BLE profiles and are running BLE and ANT+ at the same time, sending data at 100Hz plus managing analog channels and IMU sensor fusion on the M4 (using ST's MotionFX), we never had any memory issue or slow execution.
Lastly, thanks to Segger's MMD (Monitor Mode Debugging), you can fully debug your code while maintaining the BLE (or ANT+) connection alive. MMD works with the Softdevice to allocate enough cycles to the radio code, while giving you full step-by-step control of your code (on a single core processor). Debugging BLE applications is much harder without something like MMD.
A radio stack by itself is rather useless if you need a full solution with multiple radio stacks. Try sending BLE and ANT+ data at the same time, like pretty much all sports enabled devices do these days, and doing it on a device with exceptional battery life like the nRF52.
There are stupid parts to the Nordic SDK (like the sdk_config.h file, which is a hot mess, but something you deal with only once then copy over and over), and things that are questionable choices, but minor quibbles for the most part.
And, no, I don't own Nordic stock
just a happy user sharing my experience developing for commercial products.
P.S. ANT+ is Garmin proprietary and only available as binary implementation. Nordic is, as far as I know, the only implementation that works with BLE on the same radio