The reason this happens is that when you run bundle install without a Gemfile.lock (the case in a new Rails app), bundler checks with rubygems.org to see if there are any new versions available. For instance, it is possible that you have an old version of coffee-script on your system. Calling bundle install without a Gemfile.lock means “make sure to get the latest versions of my gems that are available.” When you use --local, it means “I assert that the gems are all available locally, and I want you to use them even if there may be newer ones available.”
Using --local will not work for a new app on a new system, because there are items in the default Gemfile that are not actual dependencies of Rails. If --local reliably worked, you would not need to run bundle install at all. This is because if Bundler sees that there is no Gemfile.lock when you require “bundler/setup”, it tries to satisfy the dependencies from your local gems. Unfortunately, it will not always work.
You could accomplish something pretty similar by creating a Rails template which skips bundle install, downloads a Gemfile.lock you provide, and then run bundle install by itself.