From the Filename Expansion section of the GNU bash reference:
When a pattern is used for filename expansion, the character ‘.’ at the start of a filename or immediately following a slash must be matched explicitly, unless the shell option dotglob is set. When matching a file name, the slash character must always be matched explicitly. In other cases, the ‘.’ character is not treated specially.
This is documented (and expected) behaviour in all POSIX shells, see Patterns Used for Filename Expansion:
If a filename begins with a period ( '.' ), the period shall be explicitly matched by using a period as the first character of the pattern or immediately following a slash character. The leading period shall not be matched by:
The asterisk or question-mark special characters
A bracket expression containing a non-matching list, such as "[!a]", a range expression, such as "[%-0]", or a character class expression, such as "[[:punct:]]"
It is unspecified whether an explicit period in a bracket expression matching list, such as "[.abc]", can match a leading period in a filename.