The causes are a short list: images and iframes without width and height attributes, ads and embeds injected above existing content, web fonts swapping at different metrics, and cookie banners that push the page down after paint. Each has a well-known fix — reserve the space before the content arrives.
CLS is the cheapest of the three vitals to repair and the one most often left broken, because it rarely shows up on a developer's fast connection where everything loads before the first frame. Test on a throttled mobile profile, and check the field data by template rather than trusting a single URL sample.