if y is passed as (n_samples, 1) then alphas should be an array of len 1. The estimator should behave differently if y.shape = (n_samples, 1) or (n_samples,)

did you check how Ridge works?

Still I am not sure if this extra API complexity is useful as I can do the same in one line:

models = [ElasticNetCV().fit(X, y) for y in Y.T]