Great improvements!
Here are some ideas for further progress:
A simple modification (I could do it myself but don't want to interfere with your current changes): Initially the "day line" was below the days row, now it is above. Maybe you extend the options with coTopDayLine and coBottomDayLine (and drop coDayLine, of course).
An idea which requires some deeper knowledge of the column/row layout of your component: Add a column with week numbers just as the original TCalendar has.
Maybe the arrows require some attention: Since the entire cell rectangle is accepted for a mouse click, but the arrows are left/right aligned within the cells I usually hit year when I want to click month. Maybe, centering of the arrows should improve this behavior. In the long run, however, I'd prefer to have SpeedButtons in place of the arrows which would add further flexibility by using glyphs. This idea, however, provides some hassle of inserting a control into a TGraphicControl. It would be much simpler if the calender would inherit from TWinControl instead of TGraphicControl. Was there a special reason for this selection? TWinControl would also give access to the keyboard allowing to navigate with the arrow keys.
Don't declare the texts as const but as resourcestring. This opens the component for localization using i18n as provided by Lazarus - btw: under this aspect, I don't know if it is necessary to have the display texts, month names etc. in the user interface at all. Using resource strings and po files, you can translate to any language.
The DisplayTexts might have a translation issue because you use them as a base to which you append additional strings. Depending on language, the end of the string may not always be the correct position of the added string. Use format specifiers and the Format function instead. I.e:
resourcestring
DefaultDisplayText = '"Today is %s","dd/mm/yyyy","Holidays during %d","There are no holidays set for %d"';
...
item.Caption := Format(GetDisplayText(dtHolidaysDuring), [FCalDrawer.FThisYear]);
// instead of
// item.Caption:= Format('%s %d',[GetDisplayText(dtHolidaysDuring), FCalDrawer.FThisYear]);
In a new translation, the added text can be put to the correct position this way.
I added quotation marks around the individual display text items because a comma provided by the user within a display text would lead to incorrect splitting of the item by means of the CommaText of the stringlist. You'll have to use StrictDelimiter = false to hide the quotation marks.