Well, if the distance between the head and the tail of the bone is exactly 1 unit, then the scale of the object and the widget will be exactly the same (try creating a new armature, and applying the shape to the default bone). Depending on the scale of your bone relative to the size of a default object, you’ll usually have to scale the widget up or down. Since the sizes of the bones in a character will almost always be widely varied, it is almost always necessary to scale atleast some of the widgets if not all.
Remember the bone is referring to the mesh node for the widget, in the same way an object node does - that is, it is used as the local space for the mesh data of the widget. In the same way that linked duplicates have 2 object nodes referring to the same mesh node, in this case the bone and the object both refer to the same mesh node. Scaling the bone will effect the local size of the mesh in the same way scaling the object will.
Also, the shape will often need to be rotated 90 degrees… atleast every time the bone is aligned vertically. When the bone is running in Z or up/down, the local Z axis of the bone is pointing horizontal (which is 90 degrees from global Z). So that is why you need to rotate the object 90 degrees for those bones.
I didn’t expect such in depth discussion to stem from this question, this is fun