Shrinking old partitions
Yes, this is possible. Here is how


Create a copy of the table (you can use the partition management tool for that: https://sqlpartitionmgmt.codeplex.com/)
Switch the partition you want to "compress" into the copy
Rebuild the indexes on the copy with FF = 100. 
Switch the partition back into the original table


It should be pretty trivial to automate this with a SQL agent job.

Step 3 is best done in this order:


Drop all secondary indexes
Rebuild the cluster index with FF = 100
Create all the secondary indexes again with FF=100


Also, if you have SQL Server Enterprise Edition, you could compress the data with PAGE compression. This would require a different process:


Create a copy of that table as above
Switch the data you want to compress into the copy
Compress the data by rebuilding indexes as above
ALTER the original table to enable page compression on the now empty partitions (the ones you switched out)
SWITCH the compressed data back into the original table.


With SQL Server 2014 Enteprise Edition, you can do the above as an online operation directly on the partition you want to compress. However, it is still a good idea to drop the secondary indexes in a copy first, because it will typically give you better data layout on the disk.