Ao revisar o código, normalmente tento fazer recomendações específicas sobre como resolver os problemas. Mas, devido ao tempo limitado que se pode gastar para revisar, isso nem sempre funciona bem. Nesses casos, acho mais eficiente se o desenvolvedor apresentar uma solução.
Hoje revi alguns códigos e descobri que uma classe obviamente não era bem projetada. Ele tinha vários atributos opcionais que foram designados apenas para determinados objetos e deixados em branco para outros. A maneira padrão de resolver isso seria dividir a classe e usar a herança. No entanto, nesse caso específico, essa solução parecia complicar demais as coisas. Eu não estava envolvido no desenvolvimento deste software e não estou familiarizado com todos os módulos. Portanto, não me senti suficientemente qualificado para tomar uma decisão específica.
Outro caso típico que experimentei muitas vezes é que encontro uma função, classe ou nome de variável obviamente sem sentido ou até enganoso, mas não consigo inventar um bom nome.
Então, geralmente, como revisor, não há problema em dizer "esse código é defeituoso porque ... é diferente" ou você precisa apresentar uma solução específica?