Corex
Всё зависит от возможных значений и допустимых символов в каждом из 2-х вариантов. Если в первом (value3) значения будут только цифро-буквенные, без тире, а во втором (value3-subvalue1) с тире, то можно разграничить правило на основе этого тире. Если значения могут быть и там и там абсолютно любые, то никак.
Например, если есть запрос
http://www.domain.com/some-new-value/, то его куда определить, в 1-й или 2-й вариант?
Corex
Вот такие правила получаются, разделение на основе "-":
RewriteRule ^([a-z0-9]*)/?$ script.php?param1=value1¶m2=value2¶m3=$1 [QSA,L]
RewriteRule ^([a-z0-9]*)-([a-z0-9]*)-?([a-z0-9]*)?/?$ script.php?param1=value1¶m2=value2¶m3=$1|$2|$3 [QSA,L]
Для второго можно добавить ещё уровней/отрезков -?([a-z0-9]*)? (в зависимости от кол-ва тире в запросе). И передать в param3 значения с разделением через "+" не получится, т.к. это рабочий символ (даже с экранированием), я поставил другой разделитель "|".
Хотя чем париться с разделителями "+" или "|", можно просто оставить "-", тогда правило можно сделать универсальным.