Just because they rendered the text doesn't mean they've ignored the status code.
There can be a lot of other stuff going on behind the scenes that are happening differently due to this code.
A 503 with a Retry-After header is a good example, although it has limited browser support, but in theory it will reload the page after the timeout.
There are different caching/storing rules with different status codes, they may also disable certain features, eg if you have been loading a page with an error you might find the auto complete feature in the URL bar doesn't work. I often find this is really annoying when building something new and haven't got it quite working, I keep needing the full URL, where as if it had just once given me a 200 I could just type a few letters and it would come up, but it probably far more useful that auto complete doesn't get polluted with mistyped URLs and broken websites.