Non, c'est pas du tout pareil.
En fait, tu utilise la compilation séparée dans 2 cas :
1) Quand tu as un sous-programme de taille importante qui risque de rendre ton code lourd à comprendre, tu rend ton sous-programme "separate".
Si le nom de ce sous-programme est assez explicite, ton prog principal sera beaucoup plus facile à comprendre sans les 300 lignes d'une méthode s'appelant par exemple "trier", et dont le nom suffit à comprendre ce qu'elle fait.
2) Si ton sous-programme est le seul à nécessiter la compilation avec d'autre bibliothèques par exemple ada.numerics.* ... tu peut rajouter les with et les use dans le fichier séparé, ce qui rend plus clair (pour celui qui lit le code) la compilation avec ces paquetages: on comprend directe pour qui servent ces with...
Pour rajouter une remarque au 1), tu peut considérer le cas suivant:
Imagine que le programme que tu écrit contient une ou deux très grosses fonctions ou procedures et que celles-ci sont validées, càd que tu sait qu'elles marchent.
Cependant, le reste est en débuggage, et tu recompile sans arret en ajoutant des modifs (ça doit t'arriver svt non?).
Et bien en extrayant ces sous-programmes volumineux de ton "main", tu recompileras plus vite celui-ci car les sous-programmes extraits n'aurront pas à être recompilé.
Juste une édition de lien sera nécessaire, et t'aurras moins à attendre pour peut que ta config est légère.
Voilà à quoi ça sert la compil séparée, à dégraisser l'mammouth !