Julia’s dispatch mechanisms allow you to define different implementations based on the input type, but the guiding principle should be that all the methods for a given function should mean the same thing. Obviously that’s pretty loosely-defined, so I try to think about what the help string for a given generic function should be, and minimise the number of “except when” clauses you’d need.
So in this case it seems like the new behavior is “fieldnames(x) returns a list of the fields of x”. You’re arguing for
“fieldnames(x) returns a list of the fields of typeof(x). fieldnames(x::Type) returns the fields of x.”
This sort of punning is discouraged because while it may make things more convenient when you know a prori the type of x, it makes it harder to write generic code that means the same thing regardless of the type of x.