.NETのマネージ型にはobject型を基底とした値型と参照型しかありません。
対してC++/CLIは追跡参照(%)とオブジェクト参照ハンドル(^)があります。(と素のC++の値とポインタ*と参照&)
VBにアドレスポインタを表現する方法がないように、.NETにはC++/CLIの値型に対するオブジェクト参照ハンドル(^)を表現する方法がありません。(参照型に対する参照ハンドルは.NETの参照型として公開されるので扱える)
# C++でポインタ型(*)をフィールドで公開した場合、C#ではunsafeでそのフィールドを扱えるけどVBでは扱えないのと同じように機能がないので不可能
# VBには値型の参照として関数の引数のByRefがあるけど、これはC++/CLIからみれば追跡参照%なのでハンドルではない
# C#7のrefも追跡参照と同等
よって値型のVector3Dに対するハンドルであるVector3D^をVBやC#でそのまま扱うことはできません。
扱えないのは困るので、.NETの値型の基底であるValueTypeにボックス化することで公開できるようにされています。
ボックス化されているので、Vector3Dにキャストしてボックス化を解除ですればVector3Dとして取り出せます。(ただし値型のボックス化解除でコピーが発生するのでValue3D型のメンバの値だけを変更することはできません。)
結論としてハンドルは扱えないので、クラスにVector3Dを参照ハンドルではないフィールドで定義すればNETにはそのまま元のVector3Dとして公開されます。