The works themselves, the particular activity we engage in, do not seem to matter as much as the faithfulness to the Lord with which we render the works.

Matthew 24:45-51 shows us the outcome of the work. One servant found his usefulness recalled to mind when the master returned after a long while, and he was rewarded with greater responsibilities. But if that same servant had been found untrustworthy, then he would have been disqualified from any such reward. Note that the same servant is in view; we may prove trustworthy or not in the end; there is no guarantee that we'll reign with Christ; the trustworthiness of our character matters. 

Matthew 25:14-30 shows us the same situation. The two servants who were faithful in what they did received greater responsibilities. The one servant who did not pursue his duties like the other two was rejected. 

The idea is that if we are able to follow the Lord's will honorably when we cannot see Him, then we would be able to be trusted to follow Him in the next life with whatever commensurate responsibilities He gives us. See also Luke 16:11-12: "If therefore ye have not been faithful in the unrighteous mammon, who will commit to your trust the true riches? And if ye have not been faithful in that which is another man's, who shall give you that which is your own?"

God wants to give us something to do in the future kingdom, but He will give it to those who have been found to be of such proven character that it can be entrusted to him/her. This is not a strange or weird idea. Many well-run businesses operate this way, rewarding the top performers (alas, not all governments are).

Luke 16:10 tells us, "He who is faithful in what is least is faithful also in much; and he who is unjust in what is least is unjust also in much." Do not despise the day of small things; God sees our work as serving Him or serving something else. 

How does our work on this earth transfer into the new earth when God returns?
The C# spec states that an argument type cannot be both covariant and contravariant at the same time.

This is apparent when creating a covariant or contravariant interface you decorate your type parameters with "out" or "in" respectively.  There is not option that allows both at the same time ("outin").

Is this limitation simply a language specific constraint or are there deeper, more fundamental reasons based in category theory that would make you not want your type to be both covariant and contravariant?

Edit:

My understanding was that arrays were actually both covariant and contravariant.

public class Pet{}
public class Cat : Pet{}
public class Siamese : Cat{}
Cat[] cats = new Cat[10];
Pet[] pets = new Pet[10];
Siamese[] siameseCats = new Siamese[10];

//Cat array is covariant
pets = cats; 
//Cat array is also contravariant since it accepts conversions from wider types
cats = siameseCats; 

