The Columns.Add method allows you to add an actual column to the DGV - not to specify the number of columns you want. If you think about it, that makes sense, because a column is more than just a black space - it's a descriptor of what the column contains and must at the very least have a string for the title, and a string for the access name:
DataGridViewColumnCollection Class (System.Windows.Forms) | Microsoft Docs[
^]
The Columns collection is the schema for the table, which controls how the data in Rows is displayed.
The easiest way to keep them all the same is to use the same data: set the DataSource property of the DGV and it will extract the schema from that, and you need add no more columns.