Because echo concatenates all it arguments to print them, and your script is limited to the first argument. You should use "$@" and not $1 in your script.
Let's look at the arguments you're providing for your tests:
./test "A B"
- one argument, the 3 character string AspaceB
./test ""A B""
- two arguments
- first, empty string concatenated with A
- second, B concatenated with empty string
./test """A B"""
- one argument, empty string concatenated with AspaceB concatenated with empty string
./test """"A B""""
- two arguments
- first, empty string concatenated with empty string concatenated with A
- second, B concatenated with empty string concatenated with empty string
Note: you would see different results from echo if you had used more than one space in your arguments. That's because echo concatenates its arguments with a single space:
$ echo "A B"
A B
$ echo ""A B""
A B
$ echo """A B"""
A B
$ echo """"A B""""
A B
printf '%q\n' "$@"instead ofechoat all, which will emit your arguments one-to-a-line with hidden characters and whitespace escaped in a visible form.