To jest tak samo logiczne jak C# (bo te same klasy), tyle że składnia bardziej poryta.
Pytanie czemu nie C# tylko C++/CLI? To drugie przydaje się tylko wtedy gdy chcesz mieszać natywne wywołania z tymi z frameworka - np masz bibliotekę napisaną w natywnym C++ i chcesz jej użyć, a nie chce ci się tłumaczyć 800 prototypów funkcji i 300 stuktur na C# lub gdy natywny dll eksportuje całą klasę. Albo stworzyć wrapper, który eksportuje funkcje/klasy dla natywnego kompilatora.
W innym przypadku - po co tego używać zamiast C#? Jest bardziej ograniczone, mniej wygodne, niektórych rzeczy możliwych w C# tutaj nie zrobisz.