I would say the normal thing to do is use a separate plugin. Fragments are generally used for code which is specific to a platform or language. They can also be used to change the functionality of classes in the fragment host (this is quick tricky to get working)
As an example in my main RCP project I have 45 plugins and 2 fragments, both fragments provide code that is specific to Macs. Many of the plugins provide functionality which could be considered to be optional.
As usual Lars Vogel has a tutorial on fragments here