As was discussed on the elixir-lang-core mailing list (https://groups.google.com/forum/#!topic/elixir-lang-core/kve1an2xwus), the :name field was extracted from mix.exs' project.package.name to just project.name so that multiple different libraries would be able to read it.
This is a convention that other libraries such as ExDoc already follow. Having both a project.name and a project.package.name might be confusing and is in (nearly?) all cases superfluous.
Proper behaviour, as @josevalim and @ericmj confirmed, is that project.name should be read, with project.package.name overriding this setting. Or, in other words, project.name should be read iff project.package.name is not available.