При заполнении нуля сигнала его частотный спектр становится более плотным.В некотором смысле вы интерполируете в частотной области при заполнении нулями пространственной области.
Если вы построите два частотных спектра с правильными частотами вдоль оси x, вы увидите, что они перекрываются:
N=257;
f=330.5;
fs=1024;
Ts=1/fs;
ts=0:Ts:(N-1)/fs;
x=sin(f*ts);
X=fftshift(fft(x));
F=0:fs/N:fs-fs/N; % <<< NEW!
M=2048;
zerovec=zeros(1,(M-N));
x1=[x zerovec];
X1=fftshift(fft(x1));
F1=0:fs/M:fs-fs/M; % <<< NEW!
figure()
stem(F,abs(X)) % <<< NEW! using F
hold on
stem(F1,abs(X1)) % <<< NEW! using F1