Begone, false dilemma! 3 is the same as 1 (some synergy applies in some cases), except that one is called convoluted and the other intelligent.
Material familiarity does make a difference for crafting. If you worked with stone, you're familiar with its weight, behaviour under different conditions, brittleness, patterns, etc. How much exactly is a matter of opinion, and therefore must be moddable.
The assumption we need to drop is that the player must be able to predict exactly how many mugs per hour a stonecrafter will produce after three years in the profession. That will still be influenced by resource availability, the individual dwarf's characteristics etc anyway. Knowing that a dwarf who did stuff with stone in the past will have an advantage when doing other stuff with stone in the future suffices.
Secondly, there's no reason to hard-code it. Opinions inevitably diverge on what should or shouldn't benefit from synergy. Additionally, if it's in the raws, people can toy around and experiment with its effects on gameplay so Toady doesn't need to do that all by himself.
A common way to solve this is a hierarchy of skills: Skills are divided and subdivided into groups; each skill synergizes with other skills in the same group. Eg. Woodworking is a groups, subskills are carpenter, woodcrafter, bowyer. Both bowyer and carpenter skill would add a % of their value to the woodcrafter skill when it was used. Advantage: familiar. Disadvantage: unprecise, hard to mod.
Another way is to add specific synergies for each skill. Eg: the carpentry skill gets a tag that says [synergy:woodcrafting:10] or something like that, meaning that carpentry gets a bonus of 10% of the woodcrafting skill when used. Advantage: precise; Disadvantage: confusing raws, bloated tagging.
A third way, that has come up long before the current skill discussion by the way, is to split up the skills into parts, so we can more easily track what exactly overlaps. Typical parts are material, tools, process, products etc. Advantage: very precise, flexible; Disadvantage: mostly irrelevant distinctions (eg. between ash and elm wood).
A solution to that disadvantage is to allow broader categories of materials. Certain jobs would then add their experience to all their subtypes:
- eg. using wood could apply to olm, oak and everything else for making furniture, but making bows could only give experience for the specific wood types used.
- eg. Doors, beds, cabinets, armor stands etc. would all be considered 'furniture' (as determined by tags) and would contribute their experience to a single furniture skill.
- eg. Magicking with magma, heat, fire elementals or 'haste' could all be considered fire magic. Summoning fire elementals, conjuring sprites, calling an extraplanar being could all be considered summoning magic. All fire, water, etc. magic could be considered elemental magic.
This would be very flexible, and require no special effort on behalf of the player, because everything is tracked automatically. Adding a material, object or whatever to a broader group would best happen at the raw entry of that whatever so it's added and deleted when adding or deleting whatevers.
If Toady decides that keeping track of that data is not feasible for coding reasons, an intermediate solution is to stick with the broader categories and not track specific materials. However, since these ought to be moddable, the programmed flexibility of the raws ought to be able to do the same anyway.
Another way to include specialization (on materials, items or whatever) is to let it depend on group membership (guild, civ, fortress, etc.) To see them acquiring that knowledge magically just by stroking their membership card seems wrong to me, though.