The main reasons are performance and quality of numerics. Non-professional stuff tend to lack the polish professionals spend time doing to ensure that numerical issues don't compromise the solving procedure.
Performance-wise, a good rule of thumb is problem density: if a problem is large but really sparse, open source solvers can perform really well. If a problem is dense however, we need a professional-grade implementation. The main reason is the development time invested when it comes to the scalability of the data structures and algorithms in a solver, as well as uncommon/edge use cases.
As an anecdotal real-world example, our engine calculates some of the fastest derivatives in the world, but one day we discovered that our differentiation algorithm stopped scaling well after 70,000 or so non-zero hessian elements (so it was really slow beyond that). The reason was fundamentally linked to how we were getting such speed for less dense problems, so it took my team three weeks to come up with a high performance alternative, which now triggers automatically after a certain density. Interestingly, our alternative algorithm is really slow for sparse problems, which is why we never considered it before. Taking the time to do these kinds of tricks is really common in commercial products, because our selling point is that the solver will work well even on edge cases, but not as much in most free software where the focus is (for good reason) on the average use case.