How can I style list bullets and enum numbers so that their layout matches exactly?

I’m sure there’s a better syntax out here (by writing a show rule specifically for lists and enums in grids, but you can just rely on the grid for alignment instead.

Writing the boxed number is a bit tricky due to baseline/size, which I am not familiar with but you can get away with the following:

#import "@preview/polylux:0.4.0": *
#set page(height: auto, width: 3cm)

#let m(body) = (sym.square.filled, body)
#let n(i, body) = (
  place(bottom+left, dx: .8pt,
    rect(
    fill: blue,
    width: .165cm,
    height: .165cm,
    inset: 0pt,
    outset: 0pt,
    place(top+right, dy: 1pt,
      text(
          fill: white,
          weight: 900,
          size: 0.5em,
          style: "italic",
          top-edge: "x-height",
          [#i]
      )
    )
  )),
  body
)
#slide[
  #only(1)[
    #grid(columns: (1fr,1fr,1fr,1fr), row-gutter: .2em,
      ..m[a], ..n(1)[a],
      ..m[a], ..n(2)[a],
      ..m[a], ..n(3)[a],
      ..m[a], ..n(4)[a],
      ..m[a], ..n(5)[a],
    )
  ]
  #only(2)[
    #grid(columns: (1fr,1fr,1fr,1fr), row-gutter: .2em,
      ..n(1)[a], ..m[a], 
      ..n(2)[a], ..m[a], 
      ..n(3)[a], ..m[a], 
      ..n(4)[a], ..m[a], 
      ..n(5)[a], ..m[a], 
    )
  ]
]