Oh I forgot, jannie - I had this idea.
Since you say a directing the user to the vodacom with with an OOB warning is impossible since it "might" cut off a person's downloads, how about this:
A Users has a 2GB contract.
If a user connects when he has used 1.9GB, he won't get the website redirect message, even if he downloads 500MB putting him at 2.4GB (400MB OOB) (Thus, no download error)
But lets say the next time he connects, at 2.4GB used - then he will get redirected to the vodacom website where he must accept that OOB charges are in place, after which he can continue downloading again.
(This way NOBODY also has any foot to stand on if they get any type of bill shock, because they clicked "I Accept".)
Bonus (if possible): User gets redirected every OOB increment of R5000 after that (R5000, then R10000, then R15000, etc)
IMO This would be the most simple and elegant solution.