This could work:
bpy.ops.wm.redraw_timer(type="DRAW_WIN", iterations=1)
bpy.context.area.tag_redraw()
But I have to guess every time again how this works, for me it’s just trial and error. Actually, nevermind. I don’t know how I got it to suddenly display earlier, but just clicking on the empty space doesn’t work anymore. Edit: redrawing might help. It appears when you open and close another panel.
Using labels instead of panels is a good idea, if this looks like a Blender bug it might be a good idea to use labels for now and maybe report it (also, are there any open bug reports about this? Maybe there are known workarounds).
EDIT: Removing the {'DEFAULT_CLOSED'}
flag solves this for me although the panel is opened then by default of course. Still might be better than using labels instead.