I have been trying to figure out why shapes in ROS are called links, ie
<link> tags in
gazebo? Why not
shapes as names? Why are these objects linked to?
Shapes are called links because they're not joints. Keep in mind that these are for robotics and robotic simulations, so the primary concern is going to be expressing the robot's physical structure in such a way that it can be readily used/evaluated by conventional kinematic and dynamic techniques.
Notably, Gazebo and the URDF formats are not drafting tools and are not intended for "decorating" robots. There are joints, and then there are the physical structures that connect the joints ("links"). From a simulation perspective, the link needs to define the physical distance between joints and should have a mass, a center of mass, and a moment of inertia tensor.
These tools don't care about a front grille on a car, or body panels/trim on a robotic arm, flags, pennants, attached payloads, etc., beyond their effects on the previously mentioned terms - mass, CoM, and moments of inertia.
The term you're referring to -
shape - can be part of a link, but again the shape of the link is irrelevant - it's the physical parameters that matter. You can refer to elements of links from the URDF format and note that "visual" attributes are entirely optional. However, if you choose to implement a visual attribute for a link, notice that geometry is mandatory.
The geometry sub-attribute is what you're referring to as "shape" in the question. But again, to re-iterate the points above, Gazebo and URDF formats are intended for use with robotic simulations, so they prioritize the information that is most important kinematic and dynamic simulation. Visual appearance is irrelevant.