I had the same experience with a special pivot and as far as I used calculated dimensions the collapsing/expanding of the dimension-values became instable - and this meant each kind of calculation like simple: date(Dim) or if(Dim <> 'A', Dim). Therefore I created these special dimensions additionally one step before in the datamodel and use now native fields (ok. it's not a real solution else a bypassing of a bug - but it worked for me).
For me the adjustment of the dimensions made my pivot stable but I don't think that this is the real respectively the only cause else I think it's the combination of various table-settings which leads to the error. If the above mentioned matter would be the cause we would see this behaviour more often.
In my pivot there are 14 expressions and each dimension/expression has several attribut-expressions for font- and background-color. Also there are multiple other custom cell-formattings and design- and visualization settings applied as well as a complex sorting. Any of these settings are incompatible to each other and cause this issue.
This means you could try to remove/disable some of such settings to see if it changed anything. Also possible would be to recreate the object from the scratch - copy & paste of expression-strings would be ok. but no properties should be copied (whereby I did it in my case - not step by step because there was too many settings and each time saving/closing/opening had taken a very long time - and the issue remained which excludes that the object was corrupt in itself).
I tried to recreate the whole table from scratch,but it still not working as expected, in fact very strange. Each day after reload random cells seems to be expanded n collapsed, just now I am guessing it may be a bug.