Of the two I like rebase.
Though the end result is practically the same, their application is very different.
A rebase actually rewrites history. Commits will get different commit hashes. When working on a local branch this is no problem. That is when I prefer a rebase. On a remote branch however, working with others on the same feature, it is a different story. There is a real danger of rewriting commits others are using. When they update it will seem as if they rebased commits have just vanished.
Though such situations are fixable, they are confusing, costly and I prefer to avoid them altogether. A git merge is the far better option in that case.
So, rebase if working on a local branch, merge if not.