Concordo com a resposta de Darien, mas queria acrescentar um ponto de vista da perspectiva de programadores em C #.
Quando vejo o código que diz 'setXXX', li que para dizer que está definindo um valor em uma coisa, não espero que isso tenha efeitos colaterais além de definir esse valor, e espero que seja idempotente (ou seja, posso continuar definindo-o com o mesmo valor e tudo bem). É como acessar um campo. Geralmente, eu também esperaria ver um método 'getXXX' junto com um 'setXXX'.
Não sei se é isso que você espera em Java e C ++, mas é o que eu esperaria em C #, embora em C # exista uma pequena mão para isso chamado Propriedades. E aqui estão algumas orientações interessantes sobre como usar as Propriedades ( http://msdn.microsoft.com/en-us/library/ms182181.aspx ).
Dada essa visão, a interface que eu escolheria depende apenas se houver algum efeito colateral (além de alterar esse valor do campo):
Se a execução da ação tiver efeitos colaterais, por exemplo, está mostrando uma caixa de diálogo, então eu usaria "Show ()" e "Hide ()".
Se não tiver efeitos colaterais, digamos que estou definindo a visibilidade de um "widget" e outra coisa renderize esse widget dependendo do estado, então eu usaria setVisibility ou setIsVisible. (Eu não chamaria SetVisible).
Em C # (não tenho certeza sobre Java), é bastante comum adotar um padrão de observador, em que uma estrutura de interface do usuário escuta alterações nos objetos e renderiza automaticamente a interface do usuário quando uma propriedade como Visibility é alterada. Isso significa que definir o valor chamando setIsVisible parece ter efeitos colaterais, mas, na minha definição, não. O contrato do widget é cumprido definindo seu valor de campo representando "IsVisible".
Em outras palavras, não há problema em alternar a visibilidade de um rótulo em um formulário antes que o formulário seja mostrado. Ou seja, label.getIsVisible == true, mas o formulário não é mostrado.
Não é legal chamar Hide () quando o formulário não está sendo mostrado.