Можно так, например, только высота ячеек должна быть одинаковой, если хочется, чтобы кол-во элементов в последней строке было не максимально возможным, от кол-ва столбцов такой способ не зависит:
Если кол-вол элементов всегда будет максимальное в последней строке (полное её заполнение), то хак на :before не нужен, а строки могут быть разной высоты:
border по конкретным краям можно сделать при помощи атрибутов border-right, border-left, border-bottom, border-top. Градиент же можно задать при помощи border-image: linear-gradient(...)
Также можешь попробовать через псевдо-элементы.
А вообще, не проще ли сделать такую картинку в графическом редакторе? Или вам такой border для других целей нужен?