Initial motivation for checkpoints in bitcoin is to prevent 51% attacks as explained by satoshi (July 17, 2010):
The security safeguard makes it so even if someone does have more than
50% of the network's CPU power, they can't try to go back and redo the
block chain before yesterday. (if you have this update)
I'll probably put a checkpoint in each version from now on. Once the
software has settled what the widely accepted block chain is, there's
no point in leaving open the unwanted non-zero possibility of revision
Motivation for Milestone is very similar as explained by Sergey Popov in the Tangle white paper (see discussion p18-19)
the input flow of “honest” transactions should be large compared to
the attacker’s computational power. [...] This indicates the need for additional security measures,
such as checkpoints, during the early days of a tangle-based system.
So making an analogy between both concepts is valid.
Note that the latest checkpoint in bitcoin-core was updated in 2014. (checkpoints are hardcoded in client and so are dependent of the client implementation)
Both concepts goes against the idea that consensus should be completely decentralized in a DLT, and so both community are discussing how to get rid of it.
Removing checkpoints is discussed in bitcoin community, but not so easy because it would expose the network to kind of spam attack : without checkpoint an attacker would be able to start a fork on very old blocks where the difficulty was ridiculous compared to what it is today... and even if chances to build the longest chain are practically zero, the attacker may be able to DoS the bitcoin network with flood of blocks.
Removing Milestones/Coo is discussed in IOTA community, but it is not so easy because it expose the network to double-spend attacks.
Of course implementation details are very different... because consensus mechanisms are very different. But the problem solved by those concepts is similar (and need to be solved in all permissionless DLT).