create option, set .value, set .text, add to options list (generally compatible)

function createSetTextAddOption(selectEl,val,displayText) {
	var o = document.createElement("OPTION");
	o.value = val;
	o.text = displayText;
	selectEl.options.add(o);
	return false;
}
			

create option, set .value, set .innerHTML, add to options list (fails IE6, IE7-'invalid argument')

function createSetInnerHTMLAddOption(selectEl,val,displayText) {
	var o = document.createElement("OPTION");
	o.value = val;
	o.innerHTML = displayText;
	selectEl.options.add(o);
	return false;
}

create option, add option to list, set .value, set .innerHTML (generally compatible)

function createAddOptionSetInnerHTML(selectEl,val,displayText) {
	var o = document.createElement("OPTION");
	o.value = val;
	selectEl.options.add(o);
	o.innerHTML = displayText;
	return false;
}

create option, add option to list, set .value, set .text (generally compatible)

function createAddOptionSetText(selectEl,val,displayText) {
	var o = document.createElement("OPTION");
	o.value = val;
	selectEl.options.add(o);
	o.text = displayText;
	return false;
}

Attempt to add new options/selects inline (option 2 and select 2 fail silently in IE)

According to the Microsoft documentation, this shouldn't work at all. Here's what they say about the option.add() method:

This method can be used to add elements only after the page loads.

If the method is applied inline, a run-time error occurs.

And yet, it mostly does work, aside from the innerHTML limitation...
// generally compatible inline adds
createSetTextAddOption(document.getElementById('sel5'),'1','added value 1');
createAddOptionSetInnerHTML(document.getElementById('sel5'),'3','added value 3');
createAddOptionSetText(document.getElementById('sel5'),'4','added value 4');
			
addNewSelect(document.getElementById('sel5'),'1','added value 1',createSetTextAddOption);
addNewSelect(document.getElementById('sel5'),'1','added value 3',createAddOptionSetInnerHTML);
addNewSelect(document.getElementById('sel5'),'1','added value 4',createAddOptionSetText);

// these two fail silently in IE
createSetInnerHTMLAddOption(document.getElementById('sel5'),'2','added value 2');
addNewSelect(document.getElementById('sel5'),'1','added value 2',createSetInnerHTMLAddOption);