The tolerance of a LEGO brick is 10 micrometers, while most customer-grade 3D printers are orders of magnitude worse than this, according to this site. The best I see there is 25 micrometers, which is still 2.5 times.
I'm in no way a 3D printing specialist and haven't used any tricks to enhance my print quality as I haven't printed any bricks ever, but I've heard of various methods like brushing the prints with a thin solvent to unify the layers (of course this would wreck the precision), or printing the parts a bit larger and then machining them to the proper size (which would involve a lot more planning and work for each piece).
The up side is that bricks with lower tolerances could still work in most cases (see the various clone brands, whose tolerance is definitely not up to par with LEGO, but their products still are compatible in practice), just do not expect the same homogenity, surface sheen and accept variations in the clutch power.