optional arguments for both Functions and Subroutines should not be given a type as they are Variants
That's an amazingly misinformed statement for a book.
There are a few reasons to use Variants. One is if the data may be of varying type (string, number, boolean) and your code needs to know which. Another is if you specifically need to know whether the argument was passed using IsMissing().
Otherwise, for performance and practice, you should assuredly specify the data type. You can specify defaults:
Bookmarks