You'll only find an 0800 number where the relevant company has opted to pay the full charges for incoming calls (plus a small supplement for having an 0800 number). It's obvious that E.on have decided not to go down that route.
So they use 03 numbers instead. Ofcom rules require all calls to 03 numbers to be charged at the same rate as 01 or 02 numbers. That applies to both landline providers and mobile providers.
So if you've got a package with BT (or another landline provider) that includes free calls to 01 or 02 numbers, you won't pay to call an 03 number. Similarly if you've got a mobile phone package with 'included calls' you won't pay to call 03 numbers. Since most people have one or other of those deals, the vast number of calls to 03 numbers are free to callers.
https://www.eonenergy.com/for-your-home/help-and-support/phone-numbers