I mean, it’s not because they’re Puerto Rican, it’s because they live in Puerto Rico. Someone from Iowa who moved to Puerto Rico would also not get a vote.
This is because our system allocates votes to land, not people.
US citizens don’t get to vote for president. They get to vote for who their place of residence votes for.
Up until the 60s, people in DC also didn’t get a vote, because by default only states get a vote, and it’s explicitly not a state.
You can vote from overseas in whatever location was your last permanent US residence.
People in DC get to vote for president because a special law was passed giving them electoral votes.
People in Puerto Rico have a US permeant residence that doesn’t let them vote for president, so they can’t legally vote from a different jurisdiction.
One of the proposals that’s come up occasionally is to make a similar law for Puerto Rico as we did for DC, but there’s never enough consensus on any plan to go forward, up until relatively recently.