Thanks for the replies, unfortunately I cannot post this file as it contains proprietary designs (I know this makes troubleshooting very difficult). I will try to see if I can replicate this behavior on an example file but it seems whenever I make a new design everything works as it is supposed to (BOM updates as components are added to the design). In fact even just creating a copy of this design the new copy has the correct BOM. However I cannot just switch to the copy because I have design contexts in the original design file that do not transfer over to the copy (as far as I understand it).
None of the parts are internal components or bodies, they are all references to external components. The top of the design tree correctly shows the design as an assembly (three cubes) and each of the imported components shows in the design tree as a component (single cube) only the BOM incorrectly shows the top level file as a component rather than an assembly.
Running the text command "Component.AnalyseHierarchy" seems to also return sensible results (pasted below) so it really seems like just the BOM tool is not working properly.
Component.AnalyseHierarchy
1. Number Of Unique Components: 42
2. Number Of External Reference Documents: 42
3. Total Number Of Component Occurrence: 78
4. Maximum Depth Of Assembly from Root Component: 2
5. Total Number Of Joints: 88
a. Number Of Rigid Joints: 71
b. Number Of Revolute Joints: 4
c. Number Of Slider Joints: 2
d. Number Of Cylindrical Joints: 7
e. Number Of Pin-Slot Joints: 0
f. Number Of Planar Joints: 0
g. Number Of Ball Joints: 1
h. Number Of Rigid Group: 0
i. Number Of RollPlane Joints: 0
j. Number Of BallSlot Joints: 0
k. Number Of BallPlane Joints: 0
l. Number Of PinPlane Joints: 3