Unix time / POSIX time and the time_t struct ignore leap seconds and as an extension, Date does so as well. As far as it is concerned, each day is exactly 86400 seconds long.
This means that Date.timeIntervalSince1970 is actually a bit of a lie. These timestamps that you get are the number of seconds since 1970-01-01 minus the number of leap seconds that have occurred since then (which are 27 as of now).
Ignoring these leap seconds in the timestamps is useful because it allows to represent dates in the future without any problems (it is unknown when future leap seconds occur).
When they happen – as one did on 2016-12-31T23:59:60 – the system just repeats the previous timestamp for 23:59:59 and then continues to count up normally.
So to answer your question: no, it's not a bug that Date, DateFormatter, Calendar and all the other time&date components in Foundation ignore leap seconds, it's a deliberate design decision.