ViewModel является моделью для представления, поэтому если вы ссылаетесь на состояние, которое должно иметь представление или данные, которые оно должно представлять, то ViewModel должно обработать его.
Было бы разумно использовать перечисление Visibility для представления того, какая часть представления должна просматриваться, так как это относится к состоянию представления.
Что касается KeyEventArgs, то это происходит от действия пользователя и представляет собой некоторое состояние команды, которое, если вам нужно знать, какая клавиша была нажата, является разумным ожиданием для ViewModel для обработки.
Если вы добавите больше абстракций и сложностей для удаления этого аргумента события, у вас могут возникнуть проблемы с техническим обслуживанием в будущем, если вы сможете выполнить его модульное тестирование с помощью этой команды.
Единственный раз, когда я не использовал бы Visibility или KeyEventArgs или подобное, было бы, если бы я хотел использовать ту же ViewModel для других технологий пользовательского интерфейса. Если это ваш случай, то я бы создал абстракцию (хотя, по моему опыту, это редкость и обычно все равно включает в себя свои собственные ViewModel).