Each element has its advantages and disadvantages.
The symbol is the grouping of basic elements (line, arc, hatch, pattern, text, 3D surface, 3D volume ...). It is an element that is both unique and decomposed.
The macro is a compound object that must be prepared from basic elements such as the symbol but that can be distorted according to pre-established principles to avoid erroneous representations and may have several representations depending on the scale.
The SmartPart is a parametric object made from lines of code, more or less complex. We can also have variable representations according to the scale but above all the user can interact thanks to the available parameters according to what the developer has defined.
The three types will be similar for the representation: the more elements and especially 3D polygons, the more the object will become "heavy" during manipulations.