In most regex implementations, "(\D\d{3,4}) " selects a 3 or 4 digit number with a nondigit prefix (otherwise it would find the 2345 in 12345). This way in ">1234 <" it will find ">1234 ", and put it in $1 or \1. So:
s/(\D\d{3,4}) /\1. /g
Otherwise instead of \D you can use a word boundary, \< or \b or < depending on the dialect.
Edit: if \d is not supported, as in (apparently) my command line sed, even if I could have sworn to the contrary, use [0-9] to replace \d:
sed -e 's/\([^0-9][0-9]\{3,4\}\) /\1. /g'
Test:
$ echo "This is 12345 and 1234 and 123 and 12 and 1. 123. 1234." \
| sed -e 's/\([^0-9][0-9]\{3,4\}\) /\1. /g'
Result:
This is 12345 and 1234. and 123. and 12 and 1. 123. 1234.