ok così pare funzionare:
codice:
    for (var i = 0; i < shops.length; i++) {
        var s = shops[i];
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(s[1], s[2]),
            map: map,
            title: s[0]
        });

        var tooltip = '<div id="tooltip">' +
                '<p><strong>' + s[0] + '</strong><br/>' +
                s[3] + '<br/>' +
                '</div>';

        var infoWindow = new google.maps.InfoWindow();

        var addListener = function(m, c) {
            google.maps.event.addListener(m, 'click', function() {
                infoWindow.setContent(c);
                infoWindow.open(map, m);
            });
        }
        
        addListener(marker, tooltip);
    }
ciao!!