But I can't specify the hardcoded string, insted I need to use the variable only and provide value to awk command through the variable. It's script requirement.
I don't think in performance, but the difference is that with -v the variable "a" is available also in the BEGIN section. If you don't need that, then you can use the other option.
Also note that in this context is better to use double quotes. In shell assignments this is not needed, but this is not a shell assignment and the variable will be evaluated by the shell. To illustrate:
$ NU="Hello There"
$ a=$NU
$ echo "$a"
Hello There
$ awk -v a="$NU" 'BEGIN{print a}'
Hello There
$ awk -v a=$NU 'BEGIN{print a}'
awk: can't open file BEGIN{print a}
source line number 1
$ awk 'BEGIN{print a}' a="$NU"
$ echo | awk '{print a}' a="$NU"
Hello There
$ echo | awk '{print a}' a=$NU
awk: can't open file There
source line number 1
$