As mentioned in the comments these are related posts/answers: "NIntegrate over a list of functions""NIntegrate over a list of functions", "How to avoid repetitive calculation when doing numerical integral?""How to avoid repetitive calculation when doing numerical integral?".
For more details how rules like ArrayOfFunctionsRule
are implemented see "How to implement custom integration rules for use by NIntegrate?""How to implement custom integration rules for use by NIntegrate?".