I am not seeing the behavior described in red below. I have a point feature class related to many records in a table. After performing the AddJoin, and then a FeatureClassToFeatureClass_conversion, I am not getting multiple point records as expected. I thought there was a NIM relating to this, however I am not able to find it.
One-to-many and many-to-many relationships
When using data where a one-to-many or many-to-many relationship exists, you should use a relate or relationship class to establish the relationship between the datasets. However, it is possible to create a join under these circumstances. When you create a join in such a case, there are differences between how tools and other layer-specific settings work depending on the data source. If you are using geodatabase data to create the join, all matching records are returned. If you are using nondatabase data, like shapefiles or dBASE tables, to create the join, only the first matching record is returned.
This means that if you have created a 1:M or M:M join with geodatabase data and you generate a report, you see multiple records in the report, one for each corresponding match. The multiple matches are also seen when using a join field while symbolizing a joined layer, labeling, identifying features, generating a graph, and using either the Find or Hyperlink tool. If you are using the joined layer as input to a geoprocessing tool or in an export operation, the multiple matching records are used.
This is a great technique to turn one feature into many, if multiple joined records exist.
My procedure is similar:
1) MakeFeatureLayer
2) AddJoin using 'Keep_Common' (assuming you are expecting a 1:M join)
3) CopyFeatures or FCtoFC
you can't see the 1:M multiple records after step2, but they will export to a new polygon / point etc in step3
NOTE, I can't get this to work in SDE, only GDB's
It is also a throwback to the coverages / regions / aml days where we did this quite regularly.