Yes, you are correct, these are the main difference between each aggregator contract implementation.
The Aggregator.sol contract was the first Chainlink reference contract (launched during mainnet in may 2019) which was powered by Chainlink nodes running the RunLog client. This is where every price feed update involved a requester address making a transaction that generated a LINK token transfer to each node. This was an expensive implementation as token transfers are not cheap.
The AccessControlledAggregator.sol (FluxAggregator) contract was the second version (released summer 2020) powered by Chainlink nodes running the FluxMonitor client. This contract was a large improvement as it removed the requester all together. Instead nodes themselves would monitor when updates were needed. After pushing their data on-chain during an update, nodes would be allocated LINK tokens, incrementing their internal balance within the contract for which they could withdraw at any time. This was far cheaper as LINK token transfers only occur during withdraws which are rare.
The AccessControlledOffchainAggregator.sol (Off-Chain Reporting) contract is the latest version (rolling out to mainnet soon) powered by Chainlink nodes running the OCR client. This follows the FluxMonitor where there is no requester and tokens are allocated per update, but improves upon it by batching node responses per update into a single transaction.