Причин может быть несколько.
Одна из которых: safari более строг к значению параметров, чем остальные, придерживается стандарта html и не имеет "умной" обработки значения тэгов, какая есть у WebKit.
Пруф:
https://www.w3.org/TR/html401/interact/forms.html#...
Обратите внимание на тип аттрибута label - %Text; который итерпретируется, как CDATA.
Поэтому символ '>' скорее всего считается невалидным, стоит попробовать прогнать через htmlentities в случае с PHP, либо другим удобным способом заменить на '>'.
К слову, подход к именованию тега option name="spares[0]" не нужен, т.к. id передается в самом массиве, поэтому достаточно будет объявить name="spares[]".
Все же если Вам если нужно делать выборку по этим элементам, то лучше использовать подход с использованием аттрибутов data-*
В итоге получится следующий вид:
<optgroup label="category-sup > category-sub">
<option name="spares[]" value="1" data-optgroup="category" data-spare-id="1">...</option>
</optgroup>
Все объявленные аттрибуты data-* будут доступны в HTML5 через object.dataset для native js или $(ojbect).data() для jQuery >= 1.4.3.