FWIW, although I don’t have a more concrete suggestion as I don’t fully understand the question either, I’m almost sure the code you posted wouldn’t work. The onBuild is called on every new browser window, so it would replace |label| all the time with a new instance, and it would be hard to predict which document/instance it refers to that way.
If the label is specific to each button, it might be better to add each label node to a set or an array instead of assigning it to a variable directly, or use CustomizableUI.getWidget(…).forWindow(…) when you need to get a specific one; I guess it would depend on why/how you need to use it.
If the label is created independently from the buttons (which I believe is the goal here), then you can just… use it?.. This is the part I’m not sure I follow.
The bookmarks double button is just a menu-button , with some special CSS styling to make its dropdown arrow look like another full button. As noitidart mentioned, you’ll have to style it like that yourself, as there’s no native helper/creator for it.
Or you can just create a toolbaritem and stick two toolbarbuttons in it.