If a user calls getTileEntities() on a loaded chunk, it is unreasonable to expect this will cause adjacent chunks to load, however this is exactly what happens.
getTileEntities() creates a new CraftBlockState for each CraftBlock. In the CraftBlockState constructor, getLightLevel() is called.
getLightLevel() in the world class queries the light of the block based off of adjacent blocks.
If the tile entity is on a chunk border this causes adjacent chunks to be synchronously loaded.
This is definitely undesirable and can result in hundreds of extra chunks being loaded when any plugin does a wider entity query.
(Like the essentials command /gc for example)