Olá Angelo
Entendo a sua preocupação em relação ao código repetido e a busca por melhores formas de resolver o problema. É sempre importante buscar aprimorar nossas habilidades e encontrar soluções mais eficientes.
No caso específico do exemplo que você mencionou, a mudança solicitada é registrar a data em que o artigo foi publicado. A alternativa correta para manter a estabilidade da classe seria a opção B:
public class NovaVersaoPublicacaoService : IPublicacaoService
{
  public void PublicaArtigo(int idArtigo)
  {
    var artigo = _dao.ArtigoPorId(idArtigo);
    artigo.Situacao = SituacaoArtigo.Publicado;
    artigo.DataPublicacao = DateTime.Now;
    _dao.Alterar(artigo);
  }
}
Essa alternativa cria uma nova classe que herda da interface IPublicacaoService e adiciona a funcionalidade de registrar a data de publicação. Dessa forma, evita-se a repetição de código e mantém-se a estabilidade da classe original.
Continue estudando e explorando diferentes formas de resolver problemas. Cada situação pode exigir abordagens diferentes e é sempre bom estar preparado para aplicar os princípios da programação orientada a objetos de forma eficiente.
Espero ter ajudado e bons estudos!