Performance of Widgets or Helper Methods and const Widgets

The advantage is, that a if a helper stateless widget get rebuilt (e.g. because it depends on an inherited widget that changed), only the helper stateless widget gets rebuilt. If you use a helper method, the whole widget that calls the helper method gets rebuilt.

How does an inherited widget know which helper methods contain widgets that might depend on it?

Because you call for example context.dependOnInheritedWidgetOfExactType, and if you create a new helper widget, it gets a new context (Element), while with a helper method you use the context of the parent widget

I recommend reading

This single file contains basically all there is to know about Widgets, BuildContext, Elements, Keys in 7000 LOC, but most of it is comments and asserts.
The actual “meat” of Flutter’s widget system is surprisingly small.

useMemoized() is based on the same idea, but the implementation makes it expensive to use, which may defeat the whole purpose.
I think for the idea to work, each Widget has to contain an extra field int signature, and the framework itself has to incorporate it into the logic - then the user doesn’t have to deal with “memoization” part at all: the framework will just compare the signatures of two “variants”.