Postgresql - newer identical index is used, older one used to be but is not anymore
PostgreSQL grossly overestimates how many rows will be returned by the index scan. It estimates the cost for the index scan and the sequential scan are about the same, so the slightly larger size of the index when it gets bloated probably tips the scales.

You should improve the estimates. Since it is a simple inequality condition on a timestamp, PostgreSQL should be able to come up with a decent estimate.

First, run an ANALYZE on the table and see if that does the trick.
If it does, make sure that autoanalyze runs more often:

ALTER TABLE atable SET (autovacuum_analyze_scale_factor = 0.02);


If not, run

SET default_statistics_target = 1000;


Then ANALYZE again and see if that improves the estimate.

If yes, use a statement like the following to persist the setting:

ALTER TABLE atable ALTER acolumn SET STATISTICS 1000;