mb_strtoupper() will not convert the German "?" character into its (relatively new) uppercase form ("?").
mb_strtolower() will, however, convert the uppercase form into a lowercase "?". (tested with PHP 5.5.0)
"SS" is still the most common uppercase presentation of "?". If you want this, you'll have to do it manually:
<?php
mb_internal_encoding("UTF-8");
echo mb_strtoupper("Ma?\n"); // "MA?"
echo mb_strtolower("MA?\n"); // "ma?"
echo mb_strtoupper(str_replace("?", "SS", "Ma?\n")); // "MASS"
?>