That'll be Regexp::Optimizer, which "does, ahem, attempts to, optimize regular expressions" — it performs trie optimization which I believe does not work in this particular case.
It will not. Regexp::Assemble matches "everything that any of the individual REs match" (emphasis mine). It makes a disjunction of conditions; the OP wanted a conjunction.