s/"value=.*\+1)/"(Date.new + 1.month).strftime(%B)"/ ^^^
Você tem o operador * zero ou mais de repetição seguido por \+ . O significado de \+ depende da versão do sed. Pode corresponder a + ou \+ ou pode ser o operador de uma ou mais repetições. O GNU sed trata \+ como o operador de uma ou mais repetições, exceto em um contexto onde não faria sentido - como aqui, seguindo outro operador de repetição. Eu acho que o sed do OSX trata \+ como o operador de uma ou mais repetições, e reclama aqui porque dois operadores de repetição consecutivos não fazem sentido.
No sed, para corresponder a + , escreva + .
¹ Bem, faria sentido, mas todas as seqüências de operadores de repetição, exceto {…} , podem ser reduzidas a uma única, então a maioria dos mecanismos de regexp as tratam especialmente.