The reason why they are deleted like this is due to the fact that those variables might have references to byte arrays. Therefore, they are deleted in that way.
Yes the method has not changed, but if you look at the code that is executed in 6.8 you will see that the HistoricVariableInstanceEntityManagerImpl#bulkDeleteHistoricVariableInstancesByProcessInstanceIds
method is used for the deletion. This method is optmized to properly delete things without loading them in memory.
Cheers,
Filip