There is no particular reason for fonts to be cached in this way - it was a design choice that was easy to code. What happens is that fonts are created for ranges of scales (hmm..should be zoom?) as a map of <Double, Font="">.

An alternative would be lazy initialisation, where every time the zoom is changed, the map is checked to see if it has a font for this value, and (if not) one is created.