I'm not an experienced tiler by any means but I do have an engineering backround.
The problem with reducing joint sizes is that you don't reduce the tolerences in the tile sizes at the same time.
So, if you start off with a 4mm joint and have 0.25mm tolerence in the tile sizes, you may just see it in the finished job. The tolerence is therefore 1/16th of the joint size.
Go down to 2mm and suddenly you get a tolerence of 1/8th of the joint size.......
....you can see where this is going, can't you
I looked at one tiling job where the customer said that she didn't like the wide joints commonly found on floor tiles. "Fine" I said "I'll use 2mm spacers as opposed to 4mm spacers" I left it at that. I didn't get the job, I think she decided not to retile. She did seem to like the idea though.
With that job it would not have given me a problem as the kitchen wasn't that wide. However with much larger floors you get what we engineers term as 'Tolerence Stack' I guess structural engineers and architects etc also have to take this into account, and may have the same name for it - I don't know.
Tolerence Stack is the effect of adding all the tolerences in an assembly as appropriate to give you an overall tolerence for the whole part/assembly
Imagine a tiled floor 4 metres wide. Lets assume you're using 300x 300. That will give you about 14 joints in that 4 metre span. If each tile is subjected to a .25mm tolerance, then that is about 3.5mm potential error between one column of tiles and the next. I know the tiles are laid progressively and that you'll never see tolerence build up but at 1mm grout joints it is something to consider.
This is where you need to take into account all the tolerences