Maybe you want LazyArrays.jl? But timing the construction isn’t the whole story – composite arrays like this are typically much slower to access, which may cancel out any savings. (This is generally not true of views, which is roughly why Base has SubArray but no CatView-like types.)
using LazyArrays, BenchmarkTools
a = rand(2000,2);
b = rand(2000,2);
c1 = @btime @views vcat($a[1:1000,:], $b[1:1000,:]); # 2μs
summary(c1)
c2 = @btime @views Vcat($a[1:1000,:], $b[1:1000,:]); # 3ns, much faster
c1 == c2 # true
@btime sum(abs2, $c1) # 377.8 ns
@btime sum(abs2, $c2) # 2.824 μs, slower overall (at least min time)