left funziona solo se l'elemento e relative, absolute o fixed
margin-left funziona anche se l'elemento è posizionato di default a static (ovvero non posizionato).

il cosa sia meglio usare dipende dall'effetto che vuoi ottenere, non è che ci sia un discorso di "preferenza"