See, firstly DCFLs are closed under complementation. So this is how we decide:
Given a language L, take its complement L' and check if L' is empty => L is complete.
Although emptiness is decidable for both DCFLs and CFLs, however CFLs are not closed under complementation. Hence, decidable in case of DCFLs. For CFLs we have to look for a different approach which actually doesn't exist (requires another proof) and hence the problem becomes undecidable.