Yes you will need a different approach, since storing all the buildings in the same tile is equivalent to just loading a model of all the buildings.
Another approach you probably want to avoid is storing a single building per tile, as this will result in poor performance overall.
To build an efficient tileset you will likely need to "batch" buildings together into the same tile. If you want these buildings to be individually selectable, the glb needs to contain a batchId attribute as described in the
spec. Finally you will need to build a tileset.json file that references these tiles and provides bounding volumes.