Event Bubbling

You can attach PointerListener to an element and catch events on its descendants. This way, you only have instantiate PointerListener once.
HTML:
<div id="outer">
	<div id="container">
		<div id="button-1"></div>
		<div id="button-2"></div>
		<div id="button-3"></div>
	</div>
</div>
JS:
var outerDiv = document.getElementById("outer");

var pointerListener = new PointerListener(outerDiv, {
	supportedGestures : [Tap]
});

function onTap (event) {
	// do something
}

var button_1 = document.getElementById("button-1");
button_1.addEventListener("tap", onTap);

var button_2 = document.getElementById("button-2");
button_2.addEventListener("tap", onTap);

var button_3 = document.getElementById("button-3");
button_3.addEventListener("tap", onTap);
Turn off bubbling
You can turn off bubbling in the options of PointerListener.
JS:
var pointerListener = new PointerListener(domElement, {
	bubbles : false
});
or in the options of a recognizer.
JS:
var tapRecognizer = new Tap(domElement, {
	bubbles : false
});