After running the Append or Merge tools, the feature class schemas are not respected, and fields are duplicated.
The input feature class fields have spaces or special characters in the field name(s).
When the Append and Merge tools try to match fields by name, they search the existing fields for the same name. If the name is not found, the tool creates a new field. When it creates the new field, spaces and special characters (-, *, /, &, etc.) are replaced with underscores (_).
When the field from the second or third feature class is compared to the existing fields, the names are no longer the same, so a new field is created.
For example, if a field is called 'Modified?' in both tables, the first table's field is added as 'Modified_'. When the field from the second table is compared the this field, a match is not found. A new field is created, called 'Modified_2'.