Here's the reasoning I used:
- Almost everyone works with a VCS. Let's use Git in this example.
- You start working on a new feature to your project. You add a couple
of new source files, write tests for them. Haven't checked them in
yet.
- To switch between the project files you probably use
'project-find-file'. You are likely to use that function (or
'project-find-regexp'), etc, during the initial phase of developing a
new feature as well, and to jump between the newly created files, and
their tests, etc.
- That creates expectation that new files should be considered part of
the project. And overall, false positive is usually better for this
kind of thing than false negative (not finding something that you
expect to be there).
Using .xyzignore files to list files that are junk/unimportant/etc is
par for the course when using a VCS. Until a file is added there (or
checked in), it's very visible in 'git status'. Having them omitted
from the list of project files would make them much less "visible",
contradicting Git's (or Mercurial or etc) behavior.