I've analyzed your scene, even rebuilt it from scratch because I could not understand my self what the problem was!
The reason you are getting artifacts and freestyle fails to compute correctly is because you have the legs of the table coplanar with the surface of the table and this notoriously cause problems not only in freestyle but in BI and Cycles too.
In other words avoid having a surface exactly snapped on another surface because it may cause errors computing what is on top of the other.
Just lower the two cubes by few mm and you have solved the problem
edit more info:
It's called Z-fighting
it's not specific to Blender even, this problems may be noticeable or not but for your purpose you are asking to freestyle to show only visible edge and there is no way for it to discern if the upper face of the leg/cube it's higher or lower the bottom face of the table/cube. You need to give the render a hint even by a very slight amount.
And speaking about common practice, the common practice is to delete the invisible face!