al volo farei una cosa del genere
codice:
$.each(data.frutta, function(i,value){
  var cb=$('<option>'+value+'</option>');
  if (/\d/.test(value)) {
	var label=value.replace(/[^A-Za-z]+/g, '');
	var optGroup=$('optgroup[label="'+label+'"]');
	
	if(!optGroup.length){
		optGroup = $('<optgroup label="'+label+'"></optgroup>').appendTo('#fruttap')
	} 
	optGroup.append(cb)
  } else {
	$('#fruttap').append(cb);
  }  
});
che appenderebbe correttamente anche nel caso i tuoi valori non fossero in ordine
codice:
{
  "frutta":[
    "Angurie - 3",
    "Banane",
    "Kiwi",
    "Mele",
    "Meloni - 3",
    "Meloni - 4",
    "Meloni - 10",
    "Limoni",
    "Angurie - 5"
  ]
}
ciao