It probably shouldn't be done but I've seen people rely on -processed classes in their CSS. Doing it like this will allow them to keep using CSS (IE9+ though) for this.  

I didn't want to go with an array because can't do anything useful in CSS and serializing and unserializing all the time seemed like a waste of CPU.

the data-jquery-once-[ID] works for CSS and nice code. Two things though: it's not easy to see which once() functions have been run (can't select data-jquery-once-* with JS too easily) and also, removing an attribute can be pretty slow.