I would say it's more depend on the type of project, than project size. We are working on customer hardware and integrated with large number of customer software modules. So we are actually insist on 1 or few on-site integration weeks (this depend on the project complexity rather than size).
First week usually hardware/software bring up: getting familiar with customer hardware, debuggers etc. After this depending on the software integration complexity we might go on-site few more times.
Since working on-site is a common practice, we notify all our stuff that working on-site is part of work description during recruitment process.
Now, going on-site for the whole project, we most likely refuse for 2 main reasons:
- Technical: Our projects usually carried out by small team of 1-2 ppl so sending that team away will cut the "collective knowledge". This is usually easily communicated to the customer and they understand that this is not cost effective.
- Personal: It will be hard to find ppl for that sort of work. One thing is going to see customer for one week and completely different if you sending him away for few month.
So you should ask you self why customer want you on-site, if complex integration require it's reasonable request, but usually not for the whole project. If customer want to monitor you there is much better ways to do it: Weekly status calls/meetings, intermediate milestones deliveries etc ...
Another pro is obviously changing the atmosphere. It usually fun going on-site (for a week i mean). You meet new ppl see new places etc...
For managers it's good as well since programmers that, see the customer, see the final product, understand the deadlines usually more committed to the projects.