Nie, nie powinno być żadnej różnicy. EXISTS wycofuje się, gdy tylko znajdzie jeden pasujący rząd. Dlatego zawsze jest preferowany nad m.in. (select COUNT(*) from ...) > 0 - COUNT wymusiłoby uwzględnienie wszystkich wierszy.
Jeśli utworzysz następujące cztery zapytania:
select * from sys.objects
select top 1 * from sys.objects
select 1 where exists(select * from sys.objects)
select 1 where exists(select top 1 * from sys.objects)
I włącz plany wykonania, zobaczysz, że drugie zapytanie generuje plan wykonania, który zawiera TOP operator. Zapytania 3. i 4. generują identyczne plany. TOP jest ignorowany.