Non restituisce ciò che ti aspetti perché il raggruppamento avviene prima dell'ordine, come si evince dalla posizione delle clausole nell'istruzione SQL. Sfortunatamente dovrai diventare più elaborato per ottenere le righe che desideri. Prova questo:
SELECT *
FROM `table`
WHERE `id` = (
SELECT `id`
FROM `table` as `alt`
WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
ORDER BY `time` DESC
LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3