Split Triangle Mesh into Multiple GAS

Please read this post which explains how the effective SBT index is calculated and why your setup worked:
https://forums.developer.nvidia.com/t/using-sbt-offsets-in-gas-in-program-with-only-one-sbt-record/285502/2

That post links to the corresponding chapter inside the OptiX Programming Guide.
It’s crucial to understand how the SBT indexing works to be able to develop any SBT layout matching your intended use case.

Spoiler, it’s because you set all OptixInstance sbtOffset fields to 0 inside your setup.

I posted this above before but this post and the links inside them are explaining IAS->GAS render graphs and SBT layouts:
https://forums.developer.nvidia.com/t/question-about-instance-acceleartion-struction/283898/4