Yes, this is because TO_DAYS(date_col) will return NULL for invalid dates, and NULL values are always stored in the first partition.
Also see this post:
http://forums.mysql.com/read.php?106,281178,282536
From
http://bugs.mysql.com/bug.php?id=20577
[20 Aug 13:47] Mattias Jonsson
When fixing this bug it will also change the pruning a bit:
For range partitioning, it must also include the first partition (holding the NULL values)
for queries using range search (i.e. <, >, <=, >=, BETWEEN) to be able to find 'virtual'
dates like '2000-00-00'.
This can affect performance for range partitioned tables on TO_DAYS() that have a large
first partition. Work around is to create a first partition with VALUES LESS THAN (0).