You can hard-code it like that, but I get that you want to make this generic for multiple URLs that follow a similar pattern. You were close with your earlier suggestion:
RewriteRule ^/mystore/([0-9]{4})([0-9]{4}).* http ://www.mydomain.com/mystore/$1-$2.* [R=301,L]
What do you think the $1 and $2 refer to?
You can follow the same principle as you have done for the "two years" and the corresponding $1 and $2 backreferences. The $1 is a backreference to the first captured group ie. the first parenthesised subpattern, ([0-9]{4}) (the first year). The $2 is a backreference to the 2nd captured group (the 2nd year), and so on. Just make a 3rd capturing group by wrapping parentheses around .* and using the backreference $3. For example:
RewriteRule ^mystore/([0-9]{4})([0-9]{4})(.*) http://www.mydomain.com/mystore/$1-$2$3 [R=301,L]
You can play around tidying it up, being more specific with the regex etc, but that is basically it. You could alternatively write it as:
RewriteRule ^(mystore)/(\d{4})(\d{4})-(.+) /$1/$2-$3-$4 [R=301,L]
This is similar, but not quite the same.
The only significant differerence is that this forces "-<something>" after the years. Whereas the earlier regex is literally "<anything>" after the years. Personally, I think this is a bit more readable. $1 is now a backreference to "mystore" (I try to avoid repetitiion whenever I can). $2 is the first year. $3 is the second year and $4 is the remainder of the URL (after the hyphen). \d is a shorthand character for digits (the same as [0-9]). I also tend to avoid using absolute URLs in the substitution (unless absolutely necessary - no pun intended), although it is admittedly "safer" to keep the substitution absolute for external redirects.