It is hardcoded into the source yes. AFAIK the reason why it was put there it was because it provides an easy mean of packing so the project can be deployed. I don't think the need to build eggs arises from anything else. Wouldn't it be for the deploy command, would the template be there at all?
I have yet to see the first scrapy project distributed as package or egg. The documentation only mentions packaging as a necessary step to deployment.

And it also says this:

> The simplest way to deploy your project is by using the deploy command, which automates the process of building the egg uploading it using the Scrapyd HTTP JSON API.


>  It is not a good idea to change the installed Scrapy version for multiple reasons: template can be shared with other scrapy projects, scrapy updates will overwrite the changes, these changes won't be in VCS, etc.

Ok, here I can tell your for a fact that you got confused. The template is not changed as you can see in the pull request. What is changed is the settings definitions passed to it. There is no possible way  project could impact another project regardless this changes are used or not.
Also, the setup.py we are talking about is is the one of the project, not scrapy's setup.py. Which I think nobody really cares about or ever used manually. Specially if it is under VCS this won't be a problem.

But we are discussing over a deprecated implementation, ideally this should be integrated with new scrapyd-deploy. This problem is possibly non-existent (I haven't checked).