This is just fine, because you are in fact wrapping the non-generic Action (takes no parameters) with Action<t>.
Think about it this way: when you pass an argument to a method, is there a requirement that parameter be used? Consider:
public bool DoSomething(int useless)
{
return true;
}
Now, the Command constructor works as you implied: if it gets a non-generic Action it will wrap it in Action<object>. The wrapped command does nothing with the object argument, just like the example above does nothing with it, but it will now execute and match the expected signature.