Engineering is all about trade-offs, so there's no definitive advice or design pattern that is valid for every problem. Some decisions are harder to support than others (code repetition is one of them), but if the pros of repeating code outweighs its cons in your situation, go for it.