I don't know if the user would be confused by that - arrays of <something> are usually not interchangeable with <something>. To me it'd just feel like a method that can handle either a ThemeState or an array of them, not that the array is the same thing. Like a convenience method even if everything boils down to single or compound ThemeState objects behind the scenes.

And if we make it so then wherever it matters an array will be acceptable: set, unset and has -- we can make them all handle arrays optionally.