Gemini is the reference implementation for OSGi blueprint container, and Apache Aries is another blueprint container that is widely used...including within Apache Karaf.
If you're only using Blueprint, then your idea of coding against the specification and deciding at deploy time is a good one. The behaviour of the two implementations should be identical. If you're unlucky you'll find different bugs in the two, but hopefully not since both implementations are mature. One factor which might influence your eventual decision is that you may find the performance is different between the two. (But for performance, measure, don't guess!)
If you're going to do things beyond core Blueprint, like container managed JPA and JTA you'll find there are more obvious differences between Aries and Gemini. I know Aries has a number of Blueprint extenders in this area, for example (I'm an Aries committer).
In principle Aries should run in Virgo and Gemini in Karaf, but I'm not sure I'd fancy trying it myself, since things in both stacks do build upon Blueprint.
--
http://www.manning.com/cummins - Enterprise OSGi in Action