@shabap: Thanks! I've been waiting for somebody to mention Katamari, it does share some visual similarities.
The physics are super hacky. Gravity is turned off for all the objects. There is a list of objects being pulled towards the planet, and another of the ones being pushed away. Every fixed update a force is manually applied to each object that pushes it towards or away from the sphere.
When an object is falling initially, it just moves at a standardized rate. When it collides with an object, it is parented to the sphere and enters a mode where it is on the gravity list. It checks periodically (I think I set it to 0.5 seconds) if its velocity is less than a particular amount. When that returns true, the object is taken off the gravity list.
Every time an object hits another it records that as the object it is sitting on. When an object is moved or destroyed, it tells the rest of the objects about it using BroadcastMessage() (easy since they are all children of the sphere). If an object has recorded the destroyed object as its support, that object goes back into gravity mode. I tried doing this with parenting, which was a better system, but it caused weird scaling issues.