No geral, sabemos que a dependência cíclica/circular entre pacotes é ruim. De qualquer forma, me parece que a forma como muitos desenvolvedores estruturam seus pacotes favorece o surgimento da dependência cíclica. Um exemplo simplificado é uma separação de pacotes estilo mvc: xxx.model, xxx.controller, xxx.view, etc; onde o controlador possui uma referência à view e a view ao controlador. É claro, em sistemas maiores provavelmente haverá interfaces em um pacote separado que poderão acabar com essa dependência, mas isso dificilmente acontecerá em sistemas arbitrariamente pequenos.
O que vocês acham? Estruturamos nossos pacotes de forma errada ou a dependência cíclica não é um bicho de sete cabeças? Pessoalmente, acredito em um pouco de ambos. Creio que a divisão de pacotes precisa ser um pouco mais contextualizada no domínio da aplicação e um pouco menos na divisão lógica. A questão é que, isso por si só não acaba com as dependências cíclicas e pode, por sua vez, introduzir novas.