Yes, I assume the code is written this way for good historical reasons. These reasons might no longer apply or be out-weighed by other factors, but I don't know enough to be able to say if any change would be worthwhile.
The advantage of exists over checking values is tangential to the main point of the post. It's about memory usage - if one re-uses the same SV across hash values then that takes less memory than using a new SV for each hash value. It's another case where one needs a very large number of hash entries for it to make a meaningful difference, but there are times when this applies.