Este é um post antigo, mas ainda em discussão no mundo de hoje.
Na minha opinião, se você é pago por hora e orientado pelo cliente para criar um programa de software, você deve entregar o código-fonte.
Se você possui um software comercial e o vende para uso .. então não, NÃO deve entregar o código-fonte.
Independentemente do que é legal ou não ... como eu também não sou advogado. A coisa certa a fazer é entregar o código fonte. E se algo acontecer com você? Seu cliente é deixado de fora. Além disso, e se o seu software causar danos à empresa? VOCÊ É RESPONSÁVEL! Deixe de lado o código na esperança de ser pago por trabalhos futuros. Basta fazer um bom trabalho a um preço razoável e o trabalho continuará.
E para a pessoa que cobra 5X pelo código fonte. Como programador, eu diria que você é muito bom em matemática. Por que alguém pagaria 5X por algo .. quando eles podem pagar outra pessoa 1x para apenas replicar o que você criou? Essa é uma maneira rápida de ser demitida. Você não pode comer seu código-fonte ... então, pensando assim ... você e seu código-fonte estarão sentados à margem.