The POSIX rationale for command answers most of the historical aspects your question.
The command utility is somewhat similar to the Eighth Edition shell builtin command, but since command also goes to the file system to search for utilities, the name builtin would not be intuitive.
(…) The command -v and -V options were added to satisfy requirements from users that are currently accomplished by three different historical utilities: type in the System V shell, whence in the KornShell, and which in the C shell.
In the Eighth Edition sh, the builtin builtin was documented as just bypassing functions:
Execute the built-in special command (such as break) regardless of functions defined with the same name.
Aliases didn't exist yet (and when they appeared, there were different mechanisms to bypass them). If you wanted to bypass a function to execute an external command, you could give its full path, which had the advantage of specifying exactly what you wanted to execute in case there were multiple executables with that name on the command search path. Portability across systems where the full path to a command might be different wasn't a widespread concern. So builtin did the one thing that was couldn't really be done another way.
Later, POSIX came and added a standard way of bypassing a function. In this context, portability to systems where external commands were in different locations was very much a concern, so builtin wasn't enough, hence the new command which bypasses functions (and aliases, since command foo puts foo in a position where aliases are not expanded) and finds standard commands. (Also today ksh has a builtin called builtin that does something completely different, but I don't know if it came before or after POSIX created command.) However, command purposefully does not skip built-in commands, again due to portability concerns: if an sh programs invokes a standard command, it's the operating system's choice whether this command might be provided as a built-in. command cancels the “special builtin” behavior of special builtins, again so that the application doesn't need to know whether it's invoking a builtin or not.
I don't know why zsh's command bypasses builtins when not in POSIX mode (specifically, when the posix_builtins option is unset). Its current implementation of command dates back to a change in May 1996 released in zsh 2.6 beta 20 (“remove -, exec, noglob and command from the list of reserved words”). Since that implementation already had different handling for POSIX mode, I presume it was for backward compatibility with an earlier version of zsh, but I haven't investigated further. It might be deliberate because if posix_builtins is unset, built-ins are not necessarily compatible with POSIX and so it's best to not invoke them if an application uses the specifically POSIX command command.