Returning a table that contains twice the same column should not be permitted. It should be a nice mathematical property (closure) if a SELECT always returns a valid table.
This isn't a bug. And at this point, regardless of such purity concerns, there is no way we are going to change this behavior and break well-functioning applications.
A query result is not a table. It just has a tabular form (rows and columns). It is also not a set though set-theory did inspire various aspects of SQL.