Hoping not to derail too much, I'll make the comments then go back to the original topic.
Majority of specialized 3rd party libraries such as graphics APIs and geometry processing are built using C/C++. Writing a wrapper is another project especially if the library is big and complex.
Interop in C# does have a tiny cost, typically a single-digit number of nanoseconds, but it is not as difficult as you suggest. Generally C# can access a C++ library with either no additional work as a compiled library with exposed calls, or a tiny amount of work using tools to extract the calls to invoke the functions.
Managed languages don't give you control of memory allocation de-allocation policies; cannot build your own memory manager for most frequently allocated objects.
They are no different from C++ in this regard. You can choose to use the system's standard allocators or build your own. This was a popular debate point many years ago and arguing it is a fool's errand. There are many custom tools out there. The standard library provides general functionality, it was never meant to be all that everybody could ever ask for memory allocation. Replace it with one of the many existing libraries or your own home-built library if it doesn't fit your needs.
Memory usage can explode very quickly if the application is heavy on objects and data structures.
True of all languages. It is possible to write bad code in any language. When you follow the idioms of a language the results tend to be quite good.
Lack of on stack frame allocation/deallocation of local objects, or at least not guaranteed.
I'm guessing you haven't read the C++ standard. Guarantees in C++ are surprisingly rare.
C# GUI is still behind something like Qt or even MFC, even if it looks easier to use.
Again, built-in functionality is for general purpose use. Games are generally not a general purpose use. CAD software (what this discussion is about) is not necessarily a general purpose use.
Now what reason I would go with C# other than it makes average and entry level programmers life easier???!!!
There are many reasons to choose a specific language. A wide range of business decisions and technical decisions can go in to language choice. Ease of development for a certain group of developers is only one consideration of many.
And that brings us back again to the original topic.
What good reasons are there for it?
Generally C++ is well suited for systems-level work, and a big part of very large systems like games and CAD programs includes systems-level work.
Generally there is a large pool of developers who are comfortable with the language, although in C#'s 15 year history more and more people are getting comfortable with it and the C++ pool of developers is shrinking.
As mentioned about making developer's lives easier, that can mean cost reductions. Being able to hire less-senior developers and rely on more people with lower skills means saving money. Everybody likes lower costs.
A large body of existing code is an important consideration. For established companies it can mean hundreds of thousands or even millions of lines of C++ code that needs to be maintained. Since the business needs to have C++ programmers anyway, they might as well spend time on new development.
Many systems are open to extensions through plug-in style architecture. The implementation details don't matter as long as the plug-in architecture is followed. Many such systems provide a general interface following a few registration calls and a calling convention, but the plug-in can be written in any language as long as those few calls are compatible. Use C#, compiled python, Java, Swift, or whatever else you want as long as you meet the interface requirements.