I think it is a common issue for more complex languages that you need some util data structures for the type system checks like maps, trees or just lists. The build-in data flow program is an example for such a structure. This structures are typically used by different type system rules of several nodes, but they are built in the scope of a root node or of the whole model.
Especially for the type check before generation it makes no sense to rebuild this data structure in every node where it is used, since it will be always the same. This could dramatically increase the build time. But it is of course important that it will be updated/rebuilt while editing the affected nodes.
One very easy way implementation approach could be using the memoize feature of the base language extensions. But I haven't found some object that will change with every change in some subtree.
I also suspect that something like this is already implemented in MPS itself. But - again - I couldn't find any documentation about it.
So any hint is welcome!