Why the results from Matlab curve fitting function differ when using custom equation?
I think your value of $y$ is too small. So, when the sum of squares is calculated it is already below the threshold, and the coefficients are accepted as good ones. 

And the power function is fitted differently. $log(y) = log(a) + x*log(b)$ is a linear regression that has a direct formula. While when you input it manually it is something close to gradient decent to minimize sum is squares. 

I do not know Matlab well, but you can multiply $y$ by $10^6$ and fit the curve. Then the real $a$ coefficient is $a/10^6$. Or try clicking fit options button and search the threshold value there.