Dynamic font feature was left unfinished in Unity, and issues such as these is the main reason why I prefer to avoid using them.
There are many posts on this forum that list issues with dynamic fonts as well as investigations done on those issues, but since the problem is in Unity and there is little I can do about it.
Every time you request characters from the dynamic font that don't exist, Unity has a chance of simply getting rid of old characters. It doesn't care if you are still using them, and it doesn't notify you of this happening. Even if you happen to force-request the same characters (as NGUI does), there is no guarantee that Unity will honor the request and ensure that all characters are there. Whether it's because you are going past the 2048x2048 texture size limit or something else, I don't know. Best thing you can do is limit your usage of dynamic fonts -- and more importantly, make sure that you use a fixed number of font sizes. Ie: size 32, size 64, size 22. Not have every label use it own different size.