Vega itself provides circle packing via the pack transform. You can find an example plot here.
I cannot find the pack transformation in the altair documentation. Is it somehow otherwise exposed or can I easily add it? I suppose, I can always modify the JSON Vega spec but that might be a bit brittle.
Altair is built on top of Vega-Lite, not directly on Vega. Therefore, the available transforms in Altair are those specified in Vega-Lite. Having that said, you could run Vega specs directly in Altair like this:
Note that the Vega wrapper in Altair might be deprecated in a future version of the package since it is now possible to use IPython to display Vega and Vega-Lite specs: