You have not understood the implication of using an Iterator. A quirk of an iterator is that EVERYTHING in the model runs as many times as the iterator loops. This is documented in the help file.
Now you understand that, look at your model logic, you create a table, do a spatial join then join your field(s) to it from a table in your New File geodatabase. That's loop 1 of 3.
Loop 2, you create a table, do a spatial join then join your field(s) to it from a table in your New File geodatabase.
See what happened? You just overwritten the Featureclass by creating a table again. Obviously loop 3 overwrites again... Hence you only end up with the last table fields
You need to read the help file on the subject of embedding models within models, this is critical when using iterators.
The iterator and join fields tool need to be in a sub-model.