Hi there, this is not an easy question to answer — it really depends on how you structure your application and why would you like to request those templates.
For example we have use case that once you enter particular route (screen), we anticipate that you will most likely want to enter screens X or Y. In such case we build on top of ui-router so that it actually pre-fetches using $templateRequest to make those screens available without much delay. So basically in this example this is runtime.
In many cases you really want to still use direct $templateCache manipulation — e.g. many of our common components have html separate from JS but in reality you do not want to load them separately. In such case we use build step to actually add it to cache (this can be replaced also by html import to inject directly to JS file on build step).