It does that with the assumption that the opponent is also very strong, so it doesn't attempt to exploit weaknesses. If you try to exploit weaknesses, you have to vary from optimal play, thus opening up your own weaknesses. The software doesn't do that, it just plays a perfect game.
Perfect play also exists in games like chess and checkers. Checkers has been completely solved and computers can play it perfectly. This is not true for chess, though computers play quite well. Go is even harder and the best humans easily beat the best Go computers.
Otherwise, how could they show it's close if they can't compute perfect?
Only playing hands you are +EV against a full range would be exploitable as it is way too tight in heads up.
(Related thought experiment - consider a game where each player has $101 in front of them before the hand starts, and then post $50 and $100 blinds. 100% of hands should be played from each position.)
The point I wanted to make was that you play hands where your odds of winning is <50% a large amount of the time.
Also, HU LHE is (much) more complicated than full ring. You have less knowledge about your opponents range, not more. You have to play more hands, a wider range of hands, and you frequently need to make marginal decisions.