Partitioning is a technique that addresses specific requirements like yours. Basically you could do a logical separation of data based on a measure in data such as date.
However, if you are not willing to partition your table, it is wise to separate the tasks into two tables with the goal of increasing the overall throughput assuming you will need frequent table scans over the current tasks or if, for any reason, you are reluctant to create indexes on the table (for example, due to difficulty of predicting the queries type). In such cases, this separation will help to keep the table's size for the current tasks to minimal. So, the queries that normally require full table scan could be improved (especially for ad hoc queries).
However, please note that over the time, the size of the archived tasks table will also grow in size and this growth will affect the performance of the queries which are run against this table and it might become necessary to create some indexes on the archives table.