You'd use a component.json to lock it down for an app. The inline versioning is really just a way to quickly write code and get something up and running. Manifests are just a pain when you're just getting started with a project or a small script.
If a component.json is present, it'll use that to get the versions and you just require('emberjs/ember-component')