Primeiro, acho que é uma questão de modelar e definir o que consiste em uma entidade separada. Suponha que você tenha customersum e apenas um único address. Claro que você poderia implementar tudo em uma única tabela customer, mas se, no futuro, permitir que ele tenha 2 ou mais endereços, você precisará refatorar isso (não é um problema, mas tome uma decisão consciente).
Também posso pensar em um caso interessante não mencionado em outras respostas em que dividir a tabela pode ser útil:
Imagine, novamente, você tem customerscom um único addresscada, mas desta vez é opcional ter um endereço. Claro que você pode implementar isso como um monte de NULLcolunas -able, como ZIP,state,street. Mas suponha que, dado que você tem um endereço, o estado não é opcional, mas o ZIP é. Como modelar isso em uma única tabela? Você poderia usar uma restrição na customertabela, mas é muito mais fácil dividir em outra tabela e tornar a Foreign_key NULLable. Dessa forma, seu modelo é muito mais explícito ao dizer que a entidade address é opcional e que ZIPé um atributo opcional dessa entidade.