This is relatively minor from my POV, and I don't have a clear recipe per se (the phenomenon has emerged over the course of a year or so), but am observing a version of this problem, so here's at least a semi-precise description of what I'm seeing.
I have a vertical-tabs window with many (currently 83) tabs, mostly in a deep history tree. (I display them flat, but I know that they originated as a tree.) The topmost tab is the "root"; the next few follow directly as sequential children with tweaks to the URL parameters. After that are many assorted tabs from that.
To be more precise: the topmost tab is my Dreamwidth reading page, which shows the first 20 articles. The next page is the previous 20 articles in historical order (with "?skip=20" appended to the URL), then the previous 20, etc, until I get back to where I last left off my reading. (I read from bottom to top, so as not to miss anything.) The rest of the tabs under there are miscellaneous "To Read" pages linked from those blog articles. The Dreamwidth pages get refreshed periodically, I delete those tabs as I catch up on my reading and open up additional ones as I fall behind, so the history relationships are complex.
When I reboot, the topmost "root" tab always seems to still be at the top. But the subsequent Dreamwidth reading tabs show up embedded inside the pile of "To Read" tabs. I believe the Dreamwidth tabs remain in the correct order relative to each other, but they have been shoved down the vertical pile.
(I believe that the "vertical" aspect is a red herring -- I think I was seeing this back when I was using horizontal tabs -- but I'm not certain.)
I call out the history-tree aspect because it is plausible that the resulting order is in some way history-related -- eg, that the result is the root followed by all the pages opened by that URL, followed by the "?skip=20" and then the pages opened from that URL, followed by "?skip=40" and the pages descending from that URL, and so on. But that's purely a guess, and might not have anything to do with reality -- I'm mainly observing that the "To Read" tabs seem to be staying in roughly-historical order, which is suggestive.
That is to say, I could believe that the resulting order is related to the history and relationships of the URLs, which is not the same thing as the history of the physical tabs themselves -- eg, the "?skip=40" page keeps getting deleted as I catch up and later re-created from the "?skip=20" page when I fall behind again. So if the tabs reopened post-reboot based on some sort of topological sort of their history relationships, I could imagine it resulting in the behavior I'm seeing.
Anyway, that's my observations of this phenomenon. I'm not terribly exercised by it, but hopefully it's a little helpful.