Because these objects were defined earlier in Kubernetes' history the fields have inconsistent names and defaults. In Secret there is a canonical data field which stores bytes and a stringData field which will convert text to bytes for you. ConfigMap has separate data (text) and binaryData (bytes) fields which are both canonical.
If the interface were redesigned today, Secrets would probably look like a renamed clone of ConfigMap.
If the interface were redesigned today, Secrets would probably look like a renamed clone of ConfigMap.