ksh is expanding the $CMD in the first example as a single positional argument whose value is "ls -ltr" (note the space is included. You want it expanded to two arguments: "ls" (the command name) and "-ltr" (the options). The later example cases this expansion because the expansion is in the script and then passed to the sub-shell.
If you were writing a C program, the first example gives you argc = 1 with argv[0] = "ls -ltr" and the second gives you argc = 2 with argv[0] = "ls" and argv[1] = "-ltr". (If that example helps any.)