Yes, my cell has constraints which are defined in IB. Your questions made me review all of the constraints. I had two constraints which were not being used (installed was not checked and they had not references). I deleted them and now my collectionview layout is fine in both iOS 11 and 12. For what it's worth, I've been using UICollectionView with custom UICollectionViewLayout since iOS 9 without any issues; no layout warnings during execution or anything.
I even removed all the calls to invalidateLayout() I had sprinkled around so it does appear to be related to those unused constraints.
As a final test I added back the un-used constraints and the layout went back to its original incorrect state.
So, it would be great to know whay this happened but at this point, I've got other iOS 12 things to do.
I guess my lesson learned is to keep my layout as clean as possible.