You dont need holds, they go onto the planet. You can however, fit holds if you dont want to have to fly freighters over there, but this means a bigger ship, or sacrificing some mining capacity.
I generally build miners in two styles;
1. Local - These carry 5 cargo holds with a mass driver, and several mining modules. They go up to a rock, drop the Mass Driver, and start mining. The mass driver sends the minerals where I want them. These generally operate in populated systems (like Sol).
2. Independent - These carry a lot of cargo holds, and less mining modules. I build a few and use them in systems that wont be seeing populations in the near future (or ever). They tend to be even larger, and will mine what they can carry, then head back with the minerals. They occasionally double up as superfreighters on the way back if theres colony enroute.
Lately though, I've been thinking of a new approach for uninhabited system mining, using the 'Local' miner design. It would involve sending several of these into the system, each on a different rock, with the mass drivers all pointed at one of the rocks which will act as a 'depot' for the minerals. As theres a miner and mass driver there too, it can collect all the minerals. I would then run freighters to and from this one 'depot', making logistics easier. Optimally this rock would be near the Jump Point too - though as I use 'orbiting asteroids' this may not be quite as important.
I would post designs, but I've just started a new 'conventional' game and suffice to say, mining will not be a priority for a while..!