The quotes are necessary to prevent the shell from expanding them too early.
When you execute a command using a wildcard (such as rm *), the shell expands the asterisk before calling rm. So if you had a directory containing three files (file1, another_file, third_file), then bash expands the command to:
rm file1 another_file third_file
The rm command never, ever, ever sees the asterisk; it only sees a list of files and directories.
So take that and apply it to your command:
find / -iname eddie*
You have two directories that match that pattern: eddie and eddie2. The shell expands the wildcard, so the final command looks like this:
find / -iname eddie eddie2
The first match (eddie) is applied to the -iname option. The second match (eddie2) is now orphaned. So find thinks you're trying to specify another path for it to look in. So it errors out.
You use the double quotes ("eddie*") to prevent the shell from expanding the asterisk. By doing that, the find command sees the asterisk, and interprets it as you intended.