It is helpful to share some basic properties of the script tool because they can affect how certain tasks are achieved. For example, are you using default settings of "Always run in foreground" and "Run Python script in process"? What input and output parameters are set?
Assuming you are using all defaults, one way of adding the newly created layer back in is to utilize Layer—Help | ArcGIS Desktop and AddLayer—Help | ArcGIS Desktop.
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
visibleFields = ["Field1", "Field2", "Field3", "Field4", "Field4"]
field_info = arcpy.Describe('Input Feature Layer').fieldInfo
for index in xrange(0, field_info.count):
if field_info.getfieldname(index) not in visibleFields:
field_info.setvisible(index,"HIDDEN")
arcpy.MakeFeatureLayer_management('Input Feature Layer','Output Feature Layer',"","",field_info)
addLayer = arcpy.mapping.Layer('Output Feature Layer')
arcpy.mapping.AddLayer(df, addLayer)
arcpy.RefreshTOC()
arcpy.RefreshActiveView()
If the script is running in process, the newly created "Output Feature Layer" name will remain in use after the script tool is complete, so running the tool again using a different input and exactly the same name for the feature layer (e.g., "Output Feature Layer") will generate an error.