The asterisk means zero or more occurrences of the previous expression, so that it can match the null string. In this case it matches the null string at the beginning of the line (since there are no digits there) and substitutes it with itself (nothing), plus a blank space (that one between the two ampersand in the substitution string):
$ echo "abc 123" | sed 's/[0-9]*/& &/'
^ note the blank space here!
You can easily see this behaviour if you add more ampersands:
$ echo "abc 123" | sed 's/[0-9]*/& & & & &/'
The actual string is left untouched but a sequence of (matched) null strings and blank spaces is added at the beginning.