Исходя из моего опыта, я бы выбрал одну платформу для записи вашей логики, а затем, на другой платформе, создал бы соответствующую реализацию с преобразованиями в собственные типы платформы. Нет смысла разрабатывать и писать третью реализацию, а затем выполнять преобразования на обе платформы!
При всех равных платформах я бы предпочел XNA, поскольку вы можете получить реализацию с открытым исходным кодом из MonoGame или (в конце концов) ExEn и использовать ее.
Однако на практике, я думаю, вам лучше всего начать с платформы, на которой вы собираетесь разрабатывать (XNA или Unity), а затем создать слой совместимости, когда он вам действительно понадобится.