I found several Max scripts that seperate all elements to objects but none of those keep the mesh normals. 
The only workflow that keeps the normals seems to be this: 
-Clone the whole object
-Edit mesh, delete everything but one of the elements
-Repeat
This is for Destructible chunks that I need to import in UE4 seperated as objects. Now this can be 500-2000 chunks per asset so doing this manually like that would be kinda crazy.
If there is no solution for that Plan B could be to somehow project the old mesh normals on to all the seperated objects at once. But the steal normals scripts I found can't do that.
Any ideas?
                    
                 
            
Replies
http://wiki.polycount.com/wiki/Vertex_normal#3ds_Max
Speciifically:
I do the same as you : copy the object and delete faces. Dealing with normals is painfuly slow.
Works only for editable mesh. I did test on a simple object, so, if it does nothing, it's because it crashed
fn getElements obj= ( f = obj.numfaces elements = #() done = #() for i = 1 to f do ( if (finditem done i) == 0 then ( faces = meshop.getElementsUsingFace obj #(i) as array append elements faces join done faces ) ) return elements ) try ( obj = selection[1] objFaces = #{1..obj.numfaces} elements = getElements obj for i=1 to elements.count do ( keepFaces = elements[i] as bitarray delFaces = objFaces - keepFaces newObj = copy obj meshop.deleteFaces newObj delfaces delIsoVerts:true --uncomment next line to center pivot --newObj.pivot = newObj.center ) ) catch() <br>Yea, that wiki page was really helpful but making normals Explicit does not help in this case.
Same problem with that script.