Understand Base.similar in doc section Customizing broadcasting

I am trying to customizing broadcasting my own type. However, I found the Julia doc section is little bit hard to follow. Can here someone tell me what is the use of the ElType argument in

Base.similar(bc::Broadcasted{DestStyle}, ::Type{ElType})

In particular, for the following example, I cannot understand this line

ArrayAndChar(similar(Array{ElType}, axes(bc)), A.char)

Why not implement a similar method for ArrayAndChar such as

    return ArrayAndChar(a.data, a.char)

Then the above line can be simply written as


What am I missing?