Because a single CDS is the only mechanism to pass data to glyphs. Even if you pass list/array literals, we just create a CDS with default column names behind the scenes for you. Glyph rendering is already horrendously complex— intersecting selection, non-selection, LoD, and muted rendering, hit testing, and tooltip generation, auto-ranging bounds computation… the one thing that keeps that sane is that one glyph gets data always and only from one single CDS.
And even were we to consider allowing this complexity, then ill-defined situtations open up elsehwere. What happens when a users passes x=data, y="x"
and wants a hover tooltip for "@x"
? You could argue either way, which means 100% that someone will get surprised.