It seems that there is consensus about having the option to run OpenLayers in debug mode (http://www.nabble.com/OpenLayers-%27Debug-Mode%27-tf3248860.html).
Though I understand the resistance to add in a logging framework, I wanted to make the case for Firebug (and Firebug Lite).
Everybody knows that alerts make for awkward debugging (nobody wants a modal dialog in a big loop). Firebug's console calls improve on alert calls by giving modeless messages, but that's only a slight improvement. Real debugging comes in when you can interact with the state of the application.
If OpenLayers adds its own version of console logs (or warns or errors), then this will provide the first clue to users who run into trouble. I'm assuming many people won't be able to do much with the output (the log, warning, or error message). By giving users the option of building OpenLayers with Firebug Lite (for non Firefox browsers), we could allow for cross browser interactive debugging.
I've added a debug sandbox with Firebug Lite built in. Using the patch from #248, I've added a console.warn() call when the redundant layer is added. (Try http://dev.openlayers.org/sandbox/tschaub/debug/examples/debug.html in a non-Firefox browser to see it in action.) This doesn't give any new functionality to Firefox users with Firebug - for others, it adds Firebug like functionality.
A user with a problem could build OpenLayers with a debug profile or point their script tag to someplace where one was already built (not "built" but http://dev.openlayers.org/sandbox/tschaub/debug/lib/OpenLayers.js would work). Then adding OpenLayers.debug(true) before constructing the map gives them Firebug (in IE, Safari, Opera, and Firefox without Firebug).
In addition to getting the nice warning about adding a redundant layer, they can also toy around with things like map.layers.length (assuming map is a global variable).
For development alone, I think there is good reason to use Firebug Lite (cross-browser debugging).
This does mean that the code will get littered with console.warn() and console.error() calls. The OpenLayers.ignoreConsole() call in the map constructor makes these harmless in browsers without Firebug. If the addition of the bare console object is objectionable, it could all be tucked in the OpenLayers namespace.
If there is going to be a debug mode, it means that warnings and errors will be scattered throughout the code. With the Firebug (Lite) method, at least these aren't all wrapped in if(OpenLayers.DEBUG) {} or other. And, it wouldn't be that big a feat to modify jsmin.py so that console\..*?; calls were stripped if that is a concern.
And, building with Firebug does nothing if you already have Firefox with Firebug - it just lets us make use of a very functional wheel.