The core reason is that NFAs are ambiguous to analyze directly.
The Problem with NFAs
In an NFA, from one state you can go to multiple states simultaneously on the same input. So when you ask:
"Does this string get accepted?"
You can't just follow one path — there could be many possible paths, and the string is accepted if any one of them leads to an accepting state.
This makes it hard to compare languages directly.
SO convert nfa to dfa .....and then you can trace the strings easily