My personal preference is 3-4mm on ceramics, marble and porcelain i generally go for 2mm as most of the tiles have rectified edges.
Natural stone like trav or slate I tend to use about 5mm gaps. Ultimately the choice is the clients, and they have the final word.
I remember one job client brought 20x20 rectifeid porcelain tiles for floors and walls and he wanted no gap as thats how they had them in the showroom. He was addamant that he wanted no gap. I explained that this was not possible and he had to have a gap of 2mm min, after a lot of explaining and a bit of comprimise we agreed on a 1mm gap on the walls and a 2mm gap on the floors
Customer is always right of course but let us not forget the reason we have grout joints....it is not just so it "looks nice". They have a function and if the joint is insufficient for the circumstances then the joint will not be doing it's job properly and can give rise to more potential for failure.