I've never seen that before in any hack!
The attacker has swept addresses, not UTXO, holding more than 0.15 BTC.
As had an address-balance index, not a UTXO set, aggregating balances per address requires a separate indexing layer: an Electrum node, a blockchain API, or a public dataset dump. That's a real infrastructure commitment (a full address index is on the order of a terabyte and takes days to sync), or a third-party dependency (which is very improbable for obvious opsec reasons).
The target list was built in batches well before execution: you don't aggregate address balances across the chain within a 15-minute window.
A strange consequence is that taking the small outputs inside the address that had accumulated 200 UTXOs costs him a fee and blockspace for negligible value. He did it anyway because his unit of work was the address. That's deliberate engineering, or bad engineering.
An idea is that 0.15 may not be a chosen parameter at all. If he sorted candidates by balance descending and truncated at the top N, the floor is simply wherever the last one landed. The sweep ran across exactly 500 transactions, a very round number. If the count is 500, the binding constraint was target count, not index size, and 0.15 is simply a consequence.
The remaining addresses are not safe. Suspect the attacker could launch a second wave of attacks, targeting the remaining unsecured balances. He surely already has all the keys; he just needs to run the script again.
To me, this screams AI engineered tools to swipe the balances.