C'è un pochetto di confusione nello script che hai scritto.
Forse potrebbe andarti meglio con il seguente script.
codice:
<html>
<head>
<script type="text/javascript">
	function cap(citta) {
		codcap = new Array();
		if (citta=="Roma") { codcap=["00020", "00030", "00040"]; }
		if (citta=="Catania") { codcap=["95020", "95030", "95040"]; }
		stringa="<select 'cap'>";
		num=codcap.length;
		for (i=0; i<num; i++) {
			stringa=stringa+"<option value='"+codcap[i]+"'>"+codcap[i]+"</option>";
		}
		stringa=stringa+"</select>";
		document.getElementById("divcap").innerHTML=stringa;
	}
</script>
</head>
<body onload="cap('');">
	<form name="mioform">
		<select "city" onchange="cap(this.value);">
		<option value="Roma">Roma</option>
		<option value="Catania">Catania</option>
		</select>
		<div id="divcap"></div>
	</form>
</body>