The documentation about
package.el should be improved (see bug #29420). I think
list-packages does not list all packages available on the system but only displays manageable packages (c.f. the built-in documentation).
The idea behind
package.el is to be able to download packages and install them. Packages are versioned and have versioned dependencies. Furthermore, this supports built-in packages which may or may not be newer than user-specified packages. This makes it possible to upgrade Emacs and automatically disable packages which have moved from external to core. (Note though that we don't currently register any of these, so this feature does not actually work.)
On the other hand, the command
describe-package seems to list packages.
<select the *Completion* window>
Nevertheless, it is not a convenient command to display the available packages (but you can look at the source code or file a feature request (bug report)).