Можно у каждой optgroup подсчитать количество дочерних option и количество дочерних option с классом hidden. Если количество совпадает, скрыть. Если через show/hide скрывать option, тогда нужно будет проверять css, что сложнее (навскидку не знаю, можно ли это сделать без цикла).