Why circular plugin inside the NativeComponentPlugin?

I try to learn how the native plugins are structured, and I came across a strange cycle:

  1. CppPlugin applies NativeComponentPlugin
  2. NativeComponentPlugin applies StandardToolChainsPlugin
  3. StandardToolChainsPlugin applies GccCompilerPlugin
  4. GccCompilerPlugin applies NativeComponentPlugin (back to 2)

What purpose does this circular application of the NativeComponentPlugin serve?