Your convolution looks correct, at least for what you have done, and yes, it is partially because of the 'same' option. The other part of the reason you are seeing the behavior you are is due to your extending the pulse waveform by appending zeros to it.
Let us assume I have a pulse that is 10ms long and my decay is simply e^-t. Here are several different ways to use MATLAB's convolution function:
t = 0:0.001:1;
f0 = conv(exp(-t),[ones(10,1)]);
f1 = conv(exp(-t),[ones(10,1)],'same');
f2 = conv([ones(10,1)],exp(-t),'same');
f3 = conv(exp(-t),[ones(10,1); zeros(length(t)-10,1)],'same');
f4 = conv(exp(-t),[ones(10,1); zeros(length(t)-10,1)]);
f5 = conv(exp(-t),[ones(10,1)],'valid');
What you will find when comparing f1 and f2 to f0, or f3 to f4, is that the argument 'same' basically takes the center n points from the full convolution, where n is the length of the first vector. This is expected and how it is defined in the documentation. Now, when comparing the plots of f0 and f4, you can see that the 'full' result of f4 is also extended by a number of zeros relative to f0. As such, when you call for 'same' using the f4 method, your center points will be different than if you had not appended the zeros (f0). MATLAB will do any zero padding for you internally, so there is no need to do it yourself.
P.S. There is also the option of 'valid', (f5) which may interest you, which will return only those results where it did not need to use zero-padding. Basically, It will remove the sharp drops at the edges of the convolution. If you are concerned about it, the output vector's length can be obtained based on the lengths of the inputs (so adding zeros will change this). See conv:shape for more info.