How to Apply Least Squares Estimation for Sparse Coefficient Estimation?
I am not entirely sure what matlab's LASSO routine does so I started with Ordinary Least Squares (OLS) and worked backwards.  From an OLS perspective X1 as you have it won't work.  You've got a regressor that is as all ones, but your parameter inputs for you example data (r) doesn't contain an offset.  Essentially your model doesn't fit you're data well, which is why you get a weird answer.

Second, you have repeated regressors which is going to confuse things even more.  I've rewritten your code to shift your regressors to line up the three inputs that would result from MA using p = 3.

You can perform regular old OLS on the data X1 and y to get the exact input r.  If I use matlab's LASSO function I can get the proper components of r but they are off by a scalar.

    % Code for LASSO estimation technique for 
    %MA system, L = 3 is the order,  

    %Generate input
    x = -5:.1:5;
    xm = circshift(x,[0,1]);
    xm2 = circshift(x,[0,2]);

    r = 0.5*[1.0    1.0   0.0]'; % L elements of the channel coefficients     

    %Data preparation into regressors    
    X1 = [ x' xm' xm2'];

    y = X1*r;
    y1 = filter(r,1,x); % Generate the MA model, so I can plot and check.

    r_hat = X1'*X1\(X1'*y);

    [r_hat_lasso, FitInfo] = lasso(X1, y, 'alpha', 1, 'Lambda', 1, 'Standardize', 1);


Output:

    r_hat =
    0.5000
    0.5000
    0.0000

    r_hat_lasso =
    0.3235
    0.3231
         0