Это не то, что вы сможете сделать через CLR Hosting. Если вы размещаете CLR, вы можете выполнить требования выделения ресурсов от GC до Windows, например, так что вместо VirtualAlloc он использует какой-то другой распределитель. Однако хост не вызывается при каждом выделении объекта (это будет слишком дорого).
Теоретически это можно сделать с помощью API профилирования CLR. Это позволяет вам получать обратный вызов всякий раз, когда объект выделен.
Боюсь, что вы пытаетесь взглянуть на это с неправильной точки зрения. Вместо того, чтобы ограничивать объем памяти, используемый экземплярами класса, который является очень детализированным, вы могли бы вместо этого попытаться изолировать эти внешние сборки в отдельные процессы, возможно, даже ограничив их с помощью API-объектов Win32 Job Object?