Usually this is because the logic runs in the Syntax Check mode which is used to validate the logic when editing/saving. The limit was brought here not to slow down the saving when all you want to do is to check that your code 'compiles'.
But running a logic in the Syntax Check mode also serves another purpose: to find the input parameters (to populate api.option(s)) before running the logic in the normal mode. For this reason the limit has been increased from 1 to 200 result rows in Vesper 6.0 (configurable per instance via the formulaEngine.script.paQuerySyntaxCheckMaxRows property). There are also dedicated inputs for Analytics, like api.datamartFilterBuilderUserEntry() and api.getDatamartContext().dimFilterEntry() which are not affected by any row limits.