If you ask me, <? and <?= should not be used. Short tags should be turned off and the full php tag written.
The only upside of <?= is less typing for lazy people.
As for cons, unless I'm misstaken this used to be turned on in php.ini by default in some earlier PHP version, but is currently turned on by default.
Having it turned on can cause problems with other tags, such as for example <?xml. Consider
// PHP end tag, which means the following is sent straight to output (after checking for php opening tag
?>
<?xml ...>
If short tags is turned off, the parser sees nothing matching <?php. If short tags is turned on, then <? matches PHP opening tag, followed by xml which most likely is not a defined constant, and most certainly doesn't produce the output you'd expect.
You can however work around this with
<?php
echo '<?xml ...>';
?>
Another con is that if you move your code someplace else and short tags is used but turned off in the new environment, your code will suddenly fail. Always using <?php on the other hand will always work, although of course the same reasoning could be applied to not using echo to sent the string '<?xml ...' to output.