Почему класс это ссылочный тип?
Основное отличие между ссылочными и значимыми типами в том, что одни передаются по ссылке, а другие по значению, как бы это банально не звучало. Расположение в куче или на стеке — это всего лишь следствие особенностей работы с объектом, например, времени жизни, стратегией копирования, размером.
Также стоит понимать, что CLR не всегда располагает вещественные объекты на стеке. Вот статья на эту тему от Эрика Липперта.
Видимо потому что вы оперируете не объектами, а ссылками на него. Если в C++ программист явно управляет этим, то здесь на себя это берет CLR и class - ссылочный тип, числовые простые типы, enum, struct - значимые и точка.