What causes the unpredictability in this? I would have guessed we have earth's rotation and orbit down to many decimals. Does geological activity, weather, or something else cause rotation speed differences that we just can't predict?
Yes, all of those and more. Our measurement precision is much better than the year-to-year first and second derivatives of day length. https://datacenter.iers.org/singlePlot.php?plotname=Bulletin... has the most relevant plot to this; the vertical jumps reflect leap seconds. (IERS has other plots for other dimensions of rotation, but I like this one.)
Since I was checking the Wikipedia article anyway (for when the last leap second was inserted), it also has an answer for this:
"Because the Earth's rotational speed varies in response to climatic and geological events, UTC leap seconds are irregularly spaced and not precisely predictable."
Among other things, turbulent currents of liquid iron in the Earth's core can make the core drift eastward or westward, which causes the crust and mantle to turn slower or faster. Same thing with the strength of the jet stream.
Yes. Geological activity, movement in the outer core, atmosphere, oceanic currents, melting ice, earthquakes, to name a few.
Earths rotation has been unusually fast lately. So there is not enough drift to warrant a leap second.
In short, yes, the weather, geology, and signicantly, human movement of water via aquifer draining and dam building, as well as glaicial and ice melts, all contribute to unpredictable changes in the earths rotational period, as well as the axis of rotation. The models for this are IIRC trigonometric polynomials of fairly low order, so even if we could model the unpredictability perfectly, truncation error would limit our ability to distribute the model at super high accuracy. The existing models are built in to, eg, satellites, so you can't just make them arbitrarily complex.
Fun fact: leap seconds will stop being a thing soonish. I think they phase out in 2035, with a delay because Russia needed time to update glonass satellites.
(Note: on mobile, this is from memory, details need checking ;))