Thirdly, hardware companies are generally not great at software. A lot of effort goes into physical testing and validation but the base level of quality of the code isn't great. Also the quality of a given bluetooth device often depends on the quality of the custom code for it: there's a generaly trend of running application code on the same CPU as the bluetooth code, and in an embedded context there isn't generally great seperation between the two (nordic's approach is probably the best here). A third-party making a cheap pair of bluetooth headphones is not likely to make a quality result, even if using a library which is relatively bug-free.
Finally, there's a vicous sprial effect: because you need to interact with a wide variety of other implementations, which may all be buggy or quirky in their own ways, you wind up needing to test with a wide array of other devices (expensive and may not always happen) and play whack-a-mole with the remaining issues which appear, which in turn creates more quirks and more opportunity for bugs.
As someone not familiar at the low level, can somebody explain how this can still be happening today? Are there not libraries that help ensure proper implementation? I really don't understand.