I am not sure what could be the extact reason for this 🤔. If you are saying $fetch works for you, use inside asyncData it would behave same as useFetch i.e. only render in the server side.
I like using useFetch becoz it only runs on the server side and the same data is carried forward to the client side. The simple fetch would call the api 2 times server & client.