Je dirais que ça dépend. Si tout ce dont vous avez besoin est de donner au service une tâche à effectuer et que vous ne voulez pas de réponse de sa part, alors vous devriez simplement envoyer l'information via une intention et l'oublier.
Si vous devez communiquer avec le service au sujet du téléchargement (progression, état du téléchargement, etc.), vous devez probablement vous lier au service (si vous utilisez une activité).
Si vous n'utilisez pas d'activité et que vous devez communiquer avec le service, vous pouvez implémenter la communication de plusieurs façons. Vous pouvez utiliser une interface d'événement où le service peut envoyer des événements à quiconque veut bien l'écouter, concernant la progression du téléchargement, les files d'attente et d'autres choses de ce genre. L'autre partie peut également envoyer des événements au service, ce qui peut inciter le service à répondre par un autre événement ou à effectuer une tâche. De cette façon, vous ne gardez pas une référence à un service qui peut être tué à tout moment par Android. Vous savez simplement que si vous envoyez un événement au service et que vous ne recevez pas de réponse, alors le service est mort (ou il ne veut tout simplement pas répondre).