That might be OK in theory if you were looking at one or two policies. The pensions providers will have tens of thousands of policies on their books, so having to calculate the levy amount and then wait for the next premium to arrive (if it does arrive) to pay for it would be an administrative nightmare.
Far more simple to run a job to calculate the levy amount at 30/06 and deduct the units from all policies at the same time.
Your solution doesn't take into account the policies that won't be paying another contribution (deferred pension, single premium policy, buy out bond etc).