I think it depends if you're doing it as an ASP (application service provider) or you're doing the work on a contract/consulting basis where they say they want site X built and you build site X.
It all depends on the terms, but if I asked for a site to be built, I'd hope I'd have access to the code. So when it comes time to update the site, the next consultant/contractor can look at the code and go from there (or if I want to change web servers or something).
If I was looking for a service, I'd be willing to pay for the service and not worry about the code. The code is what makes the service so special. So if I need mapping functionality on my site, I go to mapping site X and setup an agreement that I'll use their maps for Y amount of dollars a month/year. In this relationship, I'm not concerned about the code. In fact, that's partially what I'm paying for - I don't want to be concerned with the code (let other smart people work on that stuff).
But for a web site, there's not a lot of rocket science going on. You're giving out the HTML code each time the site gets loaded. The code that runs the site probably isn't all that different to all the other sites. What matters (and where the value is at) is how you put it all together and make it work. This is the part where you add value to the code and the customer/client pays you for that value you put in.