Quando você usa
cp source destination
e destination é um diretório existente, então source será colocado nesse diretório.
Portanto, cp se comporta de maneira aparentemente diferente porque o diretório js em $WAR_HOME não foi removido antes de ser copiado novamente com o mesmo caminho de destino.