I get the part of adding the behaviour attribute to the generated module, but why is the reference to the behaviour module included by itself ? Not seen this pattern before. I guess the clue is in the function name, but I wanted to be sure.
Digging through the source history, that generated call to module_info predates the use of @behaviour and was originally introduced to ensure that the generated module recompiled at the correct times:
A generated @behaviour line was added later, and without disturbing the existing line: