A major reason for this is that many of the standard utilities are built-in. You can also do double precision floating point arithmetic. Almost the complete set of C language operators are available with the same syntax and precedence. Arithmetic expressions can be used to as an argument expansion or as a separate command. The subscript for an indexed array is an arithmetic expression, whereas, the subscript for an associative array is a string.
Functions allow local variables and provide scoping for exception handling.
Functions can be searched for and loaded on first reference the way scripts are. Substring Capabilities KSH-93 allows you to create a substring of any given string either by specifying the starting offset and length, or by stripping off leading or trailing substrings during parameter substitution. You can also specify attributes, such as upper and lower case, field width, and justification to shell variables. More pattern matching capabilities KSH-93 allows you to specify regular expressions for file and string matches. Improved debugging KSH-93 can generate line numbers on execution traces.