Provide binding event mechanism in revealing module pattern
The names aren't too bad. Yes, if you're using underscore to indicate a private variable, then all privates should start with an underscore. I'd suggest: 


_click could be _onClick
s could be settings.

You're overwriting the settings completely. If there were a few more settings, I should be able to specify the ones I care about, but leave the default ones as is.


For example:

var settingsDefault = {
    clickObject: 'body',
    onClick: function(elSelector){
        console.log('clicked occurred on ' + elSelector);
    }
};
var s = settingsDefault;

var init = function (settingsCustom) {
    s = settingsCustom;
};

var _click = s.onClick;


In the above, if I do this:

module.init({
    clickObject: '.foo'
});


it'll blow up because s.onClick is not defined. You're better off to $.extend default settings with config settings.

var init = function(settingsCustom){
    s = $.extend({}, settingsDefault, settingsCustom);
};


This isn't quite true with your code, as the bind is an IIFE, but it does demonstrate the weakness in overwriting settings, rather than extending.


I would suggest keeping all bindings happening within the module, where it is at the minute - this way, everything is in one place.
I'm not a huge fan of IIFE's - the consumer should be in control of what happens when. I'd do away with the IIFE completely, but if it suits your needs, and you're happy to have your module as a singleton, then it's absolutely fine.
Nothing else to add really. Consume your own code, see if it meets your needs - I've found that I rarely need a singleton, so it might not work as you're hoping. That said, I do use them sometimes - but not as often as I originally expected!