Se SOURCE for apenas um arquivo, a diferença dependerá do que o comando encontrar: Se houver um diretório DEST, SOURCE será copiado para ele, preservando o nome. Se não existir ou for um arquivo, o DEST é interpretado como um novo nome a ser usado, eventualmente substituindo DEST se for um arquivo.
Se você tiver várias SOURCES, o DEST só poderá ser um diretório, já que copiar vários arquivos em um arquivo de destino preservaria apenas o último arquivo copiado e seria inútil para quase todos os casos.
Um comando de cópia:
cp s1 s2 s3 d1 d2 d3
pareceria que faria algum sentido, já que um número par de nomes poderia ser igual a s1 - > d1, s2 - > d2 ..., mas pense em expansão de shell:
cp *
pode resultar em interpretação diferente, dependendo do número de arquivos correspondidos por *. Portanto, se você usar vários arquivos, o último será sempre considerado um diretório. Se não existir, você receberá uma mensagem de erro.