The problem is that %ticket in "%url/scp/tickets.php?id=%ticket" gets replaced with the internal MySQL table (ost_ticket) "ticket_id" field and not the publicly known Ticket ID (same table, but field is called "ticketID").
The quicky fix is to change the appropriate line in includes/class.ticket.php, that looks something like this:
$body = str_replace("%ticket", $this->getExtId(),$body);
with:
$body = str_replace("%ticket", $this->getId(),$body);
But only do this for the appropriate section of code, since some of the templates really do need getID() and not getExtId().
This isn't the best solution though, since it exposes the internal table IDs to the user and is confusing to users. But at least the link work if someone clicks on it.
The main Ticket queue view also uses the internal table IDs. If you mouseover any ticket link you'll see it in the URL. So to really hide the internal ID from the user is a little more involved.