Is storing operator options in the scene / window manager (etc) still the way to go in 2023?

For others’ clarity - panels are redrawn via the draw() function constantly. The operator isn’t really initialized yet. The operator properties you declare in your panel are getting reset to their default values just as constantly, and therefore appear frozen.

Blender really wants to isolate properties in operators for decoupling purposes and prefers users use the redo panel for tweaking instead of exposed default values. However, there are more exceptions to that (the built-in remesh panel). And the redo panel also encourages operators to be fast with minimal side effects - tweaking a value and waiting for half a minute to see results gets discouraging.

The short but vague answer to your question is that it depends on your needs. But to be more helpful, this is a rough guide to how I determine where properties should go (I’m not pretending my opinion is factual, others are welcome to correct me):

  1. Given your property - is it specific to only one (or a couple) operators? Then its an operator property.
    • Would users run this operator multiple times with their own values? Then I will expose the default values on a panel via a keymap (maybe a PointerProperty if it’s more than one operator). Otherwise, I just leave it to be tweaked in the redo panel each time.
  2. So, the property is beyond just an operator or two, or even unrelated to any operator. Is it a setting users would want saved to the file and persist between sessions? Because one big distinction between WindowManager and Scene properties is that the latter are saved with the file. So if the property should be saved, make it a scene property. Otherwise, save it to the window manager.
    Granted, properties being saved with the file are probably not going to be a memory issue. I wouldn’t grumble that an add-on should be using the window manager instead, because most of the time the memory footprint is minimal.

EDIT:

  1. If the property’s persistence should span over multiple or all projects/files, then put it in the add-on preferences.

Again, Blender has a very strange user and developer experience when it comes to operators and their properties. It’s getting better though. Also listen to your customers (including if that’s just you). How do they prefer to manage those settings? Unless I’m running an operator many times, usually I’m okay with just using the redo panel each time.