This is the extent of my bench-level knowledge of it. Some of the trained EE's will probably have a lot more to add.
If you look at N-channel devices, such as the transistors and mosfets discussed above, the device turns on when the base/gate is at a certain potential relative to the emitter/source. By putting that device on the bottom (sink), the reference point is ground and the driving potential is readily known and produced.
Now, if you put the same controlling device on top as a source, the reference point is no longer simply ground, but is the junction between the emitter/source and the top of the controlled device. As the controlled device (like your solenioid) is turned on, its voltage drop will approach the voltage available, and the voltage at the junction between the emitter/gate and the controlled device will approach the voltage of the top rail. That is, in the case of a transistor it will be just the diode drop lower; in the case of the mosfet, it will depend on the current and the IR drop though the mosfet. In either case, your base/gate drive will have to provide a voltage that is sufficiently higher than that voltage to keep the transistor/mosfet turned on. That is particularly hard to do with mosfets, because you want something like 10V Vgs, which often means that you need to drive the gate above the highest voltage (top rail) you have available. That can be done, of course, with specialized high-side drivers, but for your application, it was simplier to use the conventional (i.e, bottom-side) control. An alternative is to use P-channel devices.
Hope that helps. John