There are two problems there.
First, you need to import Base.promote_rule (your definition is being ignored by promote_type). Second, maximum is for arrays, you want max:
julia> function Base.promote_rule(::Type{<:Multicomplex{T,N1,C1}},
::Type{<:Multicomplex{S,N2,C2}}) where
{T<:Real,S<:Real,N1,C1,N2,C2}
Multicomplex{promote_type(T,S),max(N1,N2),max(C1,C2)}
end
julia> promote_type(Multicomplex{Float64,1,2}, Multicomplex{Float64,1,4})
Multicomplex{Float64, 1, 4}