...or profiteering to put it another way.
In general originating telecoms operators get a payment for sending calls to 0800 numbers from the terminating operators, which in turn is paid by the 0800 number holder. Mobile operators say it isn't enough to cover their costs so charge for the calls. As the originating mobile network is charging, terminating operators don't make the payment.
However for e.g. calls to an 01 or 02 numbers, originating networks have to pay a fee. So how come the mobiles include geographic calls in their packages but not 0800?
Because they can : you're unlikely to switch mobile provider due to this, indeed reading the posts above you'll blame the 0800 number holder rather than the mobile network. They do it because they can get away with it.