I've been tracking down memory leaks in my game and found a bad one in NGUI...
It seems that sometimes if a Sprite is linked to a reference atlas, and that reference atlas points to a standard low-resolution NGUI atlas, a high definition atlas will be loaded instead. The way to fix it has been to point the sprite directly to the low-res atlas, save the sprite as a prefab, then point the sprite it to the reference atlas again, and save as a prefab again.
Seems like maybe there's some weird state that Sprites can get into where they point to the wrong atlas unless you reset them through the steps above.