It's just a market efficiency / liquidity 'issue'. The market is not totally efficient for example Betfair only allows odds to be offered at a set of discrete values (typically no more than 2 decimal places). So e.g. if you have back odds of 1.78 the lay odds should be 1+(1/(1-1.78)) = 2.282........... But you can't have odds to that precision, the closest is 2.28.
It's also because the odds on display are just those being offered. If there was an infinite supply of money, and instantaneous reactions to movements in the market, and zero commission, it would be much closer to the true equilibrium. But there isn't. So lets say the best odds on the market are 5.00. This would imply lay odds of 1.25. Let's say that is on offer right now. I then pile in and say you know what, I think the market is wrong, I'm going to offer 6.00 odds. This would imply lay odds of 1.2. But maybe nobody offers that immediately. It will take a small amount of time for the market to react and effectively decay this differential via arbitrage. This is then further impacted by commission, because that makes arbitrage less efficient, you can't just back the 6.00 and then lay at 1.21 and be quids in. Plus the liquidity problem, there simply may not be enough sufficient £££££ on offer in the market, dependent on what people have done.
The way to look at it is that the exchange is literally just people offering prices and like all markets it is not 100% efficient. There is nothing to stop people offering odds, maybe they chose back rather than lay because it easier for them to understand.
Finally as an aside, the real anomaly for me isn't the exchange, but traditional sportsbooks offering different odds for the same outcome. Have a look at what bookies offer for:
Draw no Bet vs Asian Handicap 0.0
Double Chance vs Asian Handicap +0.5
These are identical outcomes and hence should have identical odds at the same bookmaker. But for some reason they don't always! To me it is illogical that Asian market can give better odds.