For files not named on the command line, only the basename is compared to the exclude pattern.
Try one of these:
find * -name '.svn' -prune -o -type f -exec grep -- "MY_PATTERN" /dev/null \{\} +
find * -type f -exec grep --exclude='*.svn/*' -- "MY_PATTERN" /dev/null \{\} +